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

Индексът на Mysql се игнорира

СИЛАТА е малко погрешно наименование. Ето какво казват документите на MySQL (подчертавам моето):

Можете също да използвате FORCE INDEX, който действа като USE INDEX (списък_индекс), но с допълнението, че сканирането на таблица се приема за много скъпо. С други думи, сканиране на таблица се използва само ако няма начин да се използва един от дадените индекси за намиране на редове в таблицата.

Тъй като всъщност не „намирате“ нито един ред (вие ги избирате всички), сканирането на таблицата е винаги ще бъде най-бърз, а оптимизаторът е достатъчно умен, за да знае това, независимо от това, което им казвате.

ETA:

Опитайте веднъж да добавите ORDER BY към първичния ключ и се обзалагам, че ще използва индекса.



  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:Използване на DATETIME като първичен ключ

  2. Задайте псевдоним на колона MySQL на изчислена дата

  3. Не са предоставени данни за параметрите в подготвеното изявление

  4. MySQL група по интервали в диапазон от време

  5. SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'username'@'localhost' с помощта на CakePHP