Et pourquoi tu fais pas des tests ? En local c'est relativement stable (et sur un distant tu peux faire plusieurs essais successifs).Dans ma table forum_message id_topic est bien une clé étrangère faisait référence au champs id de ma table forum_topic. Mais nul par dans myslq je l'ai renseigné (je savais pas que c'était possible), c'est pour ça que j'ai mis actuellement id_topic en INDEX avec aussi un INDEX sur le champs date.
Je dispose de topic très lourds (centaines voir milliers de messages par topic parfois).
Merci déjà pour la confirmation de l'utilisation de l'index sur le ORDER BY.
Après je me demandais si en théorie c'était intéressant de mettre un INDEX comprenant 2 champs, sur les champs id_topic + date (en plus du champs index sur id_topic et du champs index sur date qui eux sont utilisés pour d'autres requêtes par exemple) pour ma requête donnée dans mon premier post en particulier (car c'est elle qui est lente parfois), vu qu'elle utilise ces deux champs la.
Ca doit bien servir à quelque chose de pouvoir faire des index sur plusieurs champs à la fois plutot que de faire autant d'index que je champs.
$time = microtime(true);
//exécution requête
$time_end = microtime(true);
$time_tot = $time_end - $time;
echo 'durée exécution = ' . $time_tot.'<br />';
Puisque ta table est importante tu devrais assez vite voir des différences (en prenant soin toutefois d'utiliser la même variable dans la clause WHERE pour comparer l'efficacité des différentes indexations).Merci de l'info je savais pas."cela devrait ralentir ta requête car le chargement des index prend du temps"
J'ai un doute sur le fait qu'un sgbd soit capable d'utiliser 2 index sur une table pour une requête....
SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY date ASC LIMIT 0,25
...
SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY id_topic, date ASC LIMIT 0,25
avec un index sur id_topic, date.
Arf tu as raison, j'ai dit des bêtisesBonjour,
J'ai un doute sur le fait qu'un sgbd soit capable d'utiliser 2 index sur une table pour une requête....
SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY date ASC LIMIT 0,25
...
Pour moiavec un index sur id_topic, date.SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY id_topic, date ASC LIMIT 0,25
Normalement, l'index (d_topic, date) sera utilisé pour le where et pour le order by
C'est pas une perte de temps le ORDER BY id_topic ?Bonjour,
J'ai un doute sur le fait qu'un sgbd soit capable d'utiliser 2 index sur une table pour une requête....
SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY date ASC LIMIT 0,25
...
Pour moiavec un index sur id_topic, date.SELECT * FROM forum_messages WHERE id_topic = 1 ORDER BY id_topic, date ASC LIMIT 0,25
Normalement, l'index (d_topic, date) sera utilisé pour le where et pour le order by