Page 1 sur 1

Deux requêtes

Posté : 14 oct. 2008, 11:14
par Mathieu68
Bonjour,

Petite question, voici deux requêtes: la quel est la plus rapide?
$query = 'SELECT count(*) FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'"';
$result = mysql_query($query);
$data = mysql_fetch_array($result);
if ($data[0] != 0) {
					$erreur = "Un membre possède déjà ce login.";
				}
OU
		$query = "SELECT login FROM membre WHERE login='".mysql_real_escape_string($_POST['login'])."'";
		$result = mysql_query($query);
		$nbrRows = mysql_num_rows($result);
et ensuite tester nbrRows...

Posté : 14 oct. 2008, 12:30
par mere-teresa
Pour count(*) c'est la DB qui travaille, pour l'autre c'est PHP qui travaille.

Posté : 14 oct. 2008, 13:50
par Mathieu68
et donc? que vaut-il mieux faire?

Posté : 14 oct. 2008, 15:28
par katagoto
Le COUNT SQL, certaines BDD stockent même ce chiffre, donc forcément, ça va plus vite...

Posté : 14 oct. 2008, 15:56
par zeus
De plus, ça se compte en échange réseau.
Dans le cas de la 1ère requête, le SGBD n'envoi au code PHP qu'une seule valeur numérique.
Dans le cas de la 2nd requête, le SGBD envoi autent de valeur textuelle que de données renvoyées.

Donc, dans le cas où tu n'attend que le total, il vaut mieux la 1ère requête.
Mais si tu compte afficher le nombre de login, puis la liste des login, il vaut mieux la seconde.

Posté : 14 oct. 2008, 17:55
par Mathieu68
merci :D

Posté : 14 oct. 2008, 19:35
par albat
Modération :
Mathieu68, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.