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

MySQL:Защо поръчка по ID работи много по-бавно от поръчка по други колони?

От документацията на MySQL на адрес http://dev.mysql .com/doc/refman/5.6/en/order-by-optimization.html

В някои случаи MySQL не може да използва индекси за разрешаване на ORDER BY , въпреки че все още използва индекси, за да намери редовете, които съответстват на WHERE клауза. Тези случаи включват следното:

. . .

Ключът, използван за извличане на редовете, не е същият като този, използван в ORDER BY :

`SELECT * FROM t1 WHERE key2=constant ORDER BY key1;`

Това вероятно няма да помогне, но какво ще стане, ако добавите AND ID > 0 към WHERE клауза? Това би ли накарало MySQL да използва първичния ключ за сортиране? Предполагам, че си струва да опитате.

(Изглежда странно, че подреждането с ak е ефективно, тъй като ak дори няма индекс, но това може да се дължи на по-малко стойности за ak?)



  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 оператор SELECT

  3. Заявка на Django във връзка „Едно към много“.

  4. PHP изявление трябва да връща няколко обекта, но връща само един

  5. Как да избегнете множество резултати от подзаявка