Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Meine einfache MySQL-Abfrage verwendet keinen Index

Ich vermute, dass Sie nur wenige Zeilen in der Tabelle „Kommentare“ haben. Aus diesem Grund führt MySQL einen vollständigen Tabellenscan durch, anstatt den Index in Ihrer ersten Abfrage zu verwenden. Es wird geschätzt, dass die Kosten für einen vollständigen Tabellenscan niedriger sein könnten, als zuerst den Index abzugleichen und dann die Zeilen nachzuschlagen.

In Ihrer zweiten Abfrage wird der Index verwendet, da es möglich ist, alle Spalten der Abfrage (die Spalte „id“) direkt aus dem Index abzurufen, ohne dass die Tabellenzeilen nach dem Abgleich mit dem Index nachgeschlagen werden müssen. Dies ist die Bedeutung der Zusatzinformationen "Index verwenden".

Versuchen Sie, ob MySQL bei einer erheblichen Anzahl von Zeilen in „Kommentaren“ immer noch einen vollständigen Scan verwendet. Ich denke, dass dies ein seltsames Verhalten wäre. Tatsächlich habe ich genau dasselbe in einer MySQL-Version 5.1 getestet und es wird immer der „Index“ verwendet, selbst bei wenigen Zeilen.