Please help optimiser un count en sql

Please help optimiser un count en sql - SQL/NoSQL - Programmation

Marsh Posté le 01-03-2008 à 12:00:35    

Bonjour voila mon pb  
 
ma table toto a 50000 entrees et aurra surement a terme plusieurs dizaines de milliers de donnees
 
le count me sert a avoir le nombre d idtoto entre autre et donc a ma pagination
 
le count est instantané sans clause where mais avec...
 
voila une de mes requetes, le where peu etre plus etoffé
 
SELECT count(idtoto) as nb from toto where toto.active=1
 
 
mon gros probleme est que le count me bouffe tout lol il coute genre 1000 fois plus que pas mal de mes requettes et la ca me fou les boulles
 
 
MERCI de votre aide


Message édité par schum-hacker le 01-03-2008 à 13:17:14
Reply

Marsh Posté le 01-03-2008 à 12:00:35   

Reply

Marsh Posté le 01-03-2008 à 12:06:07    

ps je suis sous mysql ;)

Reply

Marsh Posté le 01-03-2008 à 12:18:55    

il te manque probablement un index sur la colonne "active"
 
http://dev.mysql.com/doc/refman/4. [...] index.html

Reply

Marsh Posté le 01-03-2008 à 12:20:27    

non g un index sur la colonne active g essayé un index sur plusieurs colonnes car comme g dit g souvent d autres clauses ds le where mais aussi en index seul et ca m... :)
grr Merci

Reply

Marsh Posté le 01-03-2008 à 12:24:29    

je v essayer de faire juste une table a 2 entrees une clef primaire et un index sur l autre d y mettre 100000 entrees
et de faire un bench du count avec en where l index et si ca rame aussi... j aurais deja ecarter a coup sur cette option ;)

Reply

Marsh Posté le 01-03-2008 à 12:48:11    

ben pas mieux g essayé et ca rame genre 3 dixieme de seconde...

Reply

Marsh Posté le 01-03-2008 à 13:17:31    

alors ke les autres requettes c 0,004s

Reply

Marsh Posté le 01-03-2008 à 15:15:54    

l'index juste sur active, si il ne peut y avoir que deux valeurs 0/1, ne sert probablement a rien et tu devrais le dégager.
il faut que le critere soit suffisament discriminant pour qu'un index soit utile, et la si ls sgbd decide de l'utiliser il sera meme handicapant.
 
ceci dit juste pour 50000 records ca me parait bcoup 0.3 sec

Reply

Marsh Posté le 01-03-2008 à 17:35:20    

ben je suis en en moteur myisam et  c 0,2 pr 50000 c 0,3 pr 100000, et de pire en pire genre avec 200000 l ordi il bouge plus il meurt
c sur ke si je fait un count sans where c intantané mais bon c pas le but...
si KK1 a une id??? c pr faire une pagination selon les criteres choisis ;)

Reply

Marsh Posté le 01-03-2008 à 17:42:41    

merci casimimir ;)
t as raison pr l index il fait ramer sur une valeur comme 0, 1
juse une autre tite question vu ke tu te gaves :)
il vaut mieux faire un index ar clef ou un index multiple??
sachant ke g des requetes avec une ou plusieurs clause ds le where ca varie????
et re merci!!!
donc la pr 50000 je suis a 0,1 bon  mais c tjs 25 fois plus ke pas mal de requete
le truc c ke si ca monte a 1 millions d entree je suis mort???


Message édité par schum-hacker le 01-03-2008 à 17:44:50
Reply

Marsh Posté le 01-03-2008 à 17:42:41   

Reply

Marsh Posté le 02-03-2008 à 15:22:11    

ca dépend, il faut voir le nombre de critere, combien de criteres sont suffisament déterminant, lesquels sont systématiques.
 
parceque outre le nombre de champ sur lequel porte l'index, l'ordre a son importance aussi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed