SELECT count(*) ralentit-il la requete ?

Falbalas
Invité n'ayant pas de compte PHPfrance

15 mars 2005, 13:37

Bonjour,

J'hésite entre SELECT COUNT(*) et SELECT COUNT(id) as num.

Le premier doit lire tous les champs de la ligne concernée, cela va t'il ralentir la requête ?
Merci pour vos conseils.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

15 mars 2005, 14:16

Code : Tout sélectionner

SELECT count(id) as num
est plus rapide que

Code : Tout sélectionner

SELECT count(*)

Mammouth du PHP | 1885 Messages

15 mars 2005, 19:00

Faux, MySQL optimise la requête COUNT(*) de manière automatique.
COUNT(*) est optimisée pour retourner très rapidement un résultat si SELECT travaille sur une table, qu'aucune autre colonne n'est lue, et qu'il n'y a pas de clause WHERE. Par exemple :

mysql> SELECT COUNT(*) FROM student;

Cette optimisation s'applique uniquement pour les tables MyISAM et ISAM, car un compte exact du nombre de lignes est stocké pour ces types de tables, et il peut être lu très rapidement.
;)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

15 mars 2005, 19:24

Mea culpa !
J'ai donné cette réponse d'après mes connaissances Oracle
sans vérifier si MySQL proposait une optimisation différente.
Pardon, pardon, pardon... :agenouille:

Falbalas
Invité n'ayant pas de compte PHPfrance

16 mars 2005, 08:51

Merci pour ces précisions. :wink: