Salut
J'ai un petit soucis de performance, je voulais savoir si c'était normal ou s'il y avait quelque chose à faire. J'ai une table news, qui possède une clef primaire "id", ainsi qu'un index compound (index_news) portant sur 2 champs : le champs "auteur" et le champ "archive" (dans cet ordre là). Grâce à cet index, l'obtention du dernier enregistrement qui valide une clause WHERE sur ces 2 champs est instantanée :
mysql> EXPLAIN SELECT max(id) FROM news WHERE auteur = 61 AND archive = 0;
+------------------------------+
| Comment |
+------------------------------+
| Select tables optimized away |
+------------------------------+
1 row in set (0.00 sec) |
Par contre, je suis très surpris de voir que MySQL est obligé de parcourir tous les enregistrements qui valident ma clause WHERE pour les compter Ca ne demande pas énormément de temps (0.1 seconde), mais c'est déjà un dizième de seconde de trop à mon goût :
mysql> EXPLAIN SELECT count(*) FROM news WHERE auteur = 61 AND archive = 0;
+---------+------+----------------+-------------+---------+-------------+------+-------------------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+---------+------+----------------+-------------+---------+-------------+------+-------------------------+
| news | ref | index_news | index_news | 4 | const,const | 594 | where used; Using index |
+---------+------+----------------+-------------+---------+-------------+------+-------------------------+
1 row in set (0.00 sec) |
C'est normal doc ?
Message édité par Core 666 le 22-08-2002 à 18:38:16