Mysql
 sql >> база данни >  >> RDS >> Mysql

Моята проста MySql заявка не използва индекс

Предполагам, че имате няколко реда в таблицата с коментари, ето защо MySQL прави пълно сканиране на таблицата, вместо да използва индекса в първата ви заявка. Изчислено е, че цената на пълно сканиране на таблицата може да е по-ниска, отколкото първо да съвпадне с индекса и след това да потърси редовете.

Във втората ви заявка се използва индексът, защото е възможно да получите всички колони на заявката (колоната "id") директно от индекса, без да е необходимо да търсите редовете на таблицата след съвпадение на индекса. Това е значението на допълнителната информация "Използване на индекс".

Опитайте, ако със значителен брой редове в „коментари“ MySQL все още използва пълно сканиране, мисля, че това би било странно поведение. Всъщност тествах точно същото в MySQL версия 5.1 и той винаги използва „индекса“ дори с няколко реда.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Десетичният тип данни закръглява стойностите

  2. SQL съвпадение при подреждане на букви и цифри без използване на регулярни изрази

  3. Обектът от клас stdClass не може да бъде преобразуван в низ

  4. PHP - извличане на подготвен stmt в клас:Класът за фатална грешка не е намерен

  5. Кои знаци трябва да бъдат екранирани, за да се предотвратят (My)SQL инжекции?