Page 1 sur 1

SELECT count(*) ralentit-il la requete ?

Posté : 15 mars 2005, 13:37
par Falbalas
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.

Re: SELECT count(*) ralentit-il la requete ?

Posté : 15 mars 2005, 14:16
par albat

Code : Tout sélectionner

SELECT count(id) as num
est plus rapide que

Code : Tout sélectionner

SELECT count(*)

Posté : 15 mars 2005, 19:00
par Xenon_54
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.
;)

Posté : 15 mars 2005, 19:24
par albat
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:

Posté : 16 mars 2005, 08:51
par Falbalas
Merci pour ces précisions. :wink: