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

MySQL индекси и ред

Индексният ред има значение, когато условията на вашата заявка се отнасят само за ЧАСТ на индекса. Помислете за:

  1. SELECT * FROM table WHERE first_name="john" AND last_name="doe"

  2. SELECT * FROM table WHERE first_name="john"

  3. SELECT * FROM table WHERE last_name="doe"

Ако вашият индекс е (first_name , last_name ) заявки 1 и 2 ще го използват, заявка #3 няма. Ако вашият индекс е (last_name , first_name ) заявки 1 и 3 ще го използват, заявка №2 няма. Промяната на реда на условието в клаузата WHERE няма ефект и в двата случая.

Подробности са тук

Актуализиране :
В случай, че горното не е ясно - MySQL може да използва индекс само ако колоните в условията на заявка образуват най-левия префикс на индекса. Заявка №2 по-горе не може да използва (last_name , first_name ) индекс, защото се основава само на first_name и first_name НЕ е най-левият префикс на (last_name , first_name ) индекс.

Редът на условията В рамките на заявката няма значение; заявка №1 по-горе ще може да използва (last_name , first_name ) индекс е добре, защото условията му са first_name и last_name и, взети заедно, те образуват най-лявата префикса на (last_name , first_name ) индекс.



  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. Python MySQLdb / MySQL INSERT IGNORE &Проверка дали е игнориран

  3. NodeJS/mySQL - ER_ACCESS_DENIED_ERROR Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:ДА)

  4. Достъпът е отказан за потребител 'root'@'localhost' при опит за предоставяне на привилегии. Как да дам привилегии?

  5. Кой е най-бързият начин за вмъкване на стойности от datagridview в mysql база данни