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

Защо тази заявка използва where вместо индекс?

Резултатът от EXPLAIN понякога могат да бъдат подвеждащи.

Например filesort няма нищо общо с файлове, using where не означава, че използвате WHERE клауза и using index могат да се показват в таблиците без дефиниран нито един индекс.

Using where просто означава, че има някаква ограничителна клауза в таблицата (WHERE или ON ), и не всички записи ще бъдат върнати. Имайте предвид, че LIMIT не се счита за ограничителна клауза (въпреки че може да бъде).

Using index означава, че цялата информация се връща от индекса, без да се търсят записите в таблицата. Това е възможно само ако всички полета, изисквани от заявката, са покрити от индекса.

Тъй като избирате * , това е невъзможно. Полета, различни от category_id , board_id , display и order не са обхванати от индекса и трябва да се търсят.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Помощ за йерархичните данни на MySQL - Метод за затваряне на таблица

  2. БРОЙ MySQL РАЗЛИЧЕН

  3. MySQL - Преобразуване на дублирана стойност в уникална с конкатенация на нарастване

  4. MySQL полето DATETIME съкращава ISO8601

  5. MySQL не може да добави ограничение за външен ключ