SELECT count(*) ralentit-il la requete ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : SELECT count(*) ralentit-il la requete ?

par Falbalas » 16 mars 2005, 08:51

Merci pour ces précisions. :wink:

par albat » 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:

par Xenon_54 » 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.
;)

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

par albat » 15 mars 2005, 14:16

Code : Tout sélectionner

SELECT count(id) as num
est plus rapide que

Code : Tout sélectionner

SELECT count(*)

SELECT count(*) ralentit-il la requete ?

par Falbalas » 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.