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

Трябва ли да включим колона за сортиране, първичен ключ в съставния индекс (MySQL)

Отговорът зависи от двигателя, който използвате:

  • MyISAM – добавянето на идентификатор към индекса може и вероятно ще помогне
  • InnoDB – Първичният ключ вече е част от всеки вторичен индекс, тъй като innodb съхранява редове в BTREE, сортирани по първичен ключ и индексът се нуждае от първичен, за да сочи към действителния ред – в този случай добавянето му е излишно, ако е последен в индекса ( но това няма да го добави два пъти, така че не трябва да влошава нещата). В някои случаи може да искате да го добавите като не-последен или имате основен с няколко колони и добавяте някои колони към вашия индекс в различен ред - не би трябвало да има проблем с него, innodb ще добави останалите колони от първичния към този индекс, но може да използва добавените преди, без да ги дублира)

Така че отговаря:

  1. В InnoDB това е ненужно, в MyISAM е добре, в случай че действително използвате това сортиране, ако не го използвате, добавянето му само прави този индекс по-голям.
  2. Редът на колоните в дефиницията на таблицата и редът в индекса са отделни неща, така че е наред
  3. Да, този индекс изглежда наистина добър - но можете да проверите себе си, като използвате покриващ индекс ", но това идва с цена, така че освен ако заявката не е критична и не е по-ефективна, вероятно е излишна.



  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 - как да направите пощенски код на предната подложка с 0?

  2. Конкатениране на записи в една колона без цикъл?

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

  4. Как да извлечете данни от база данни с помощта на уеб услуги (JAX - RS) в eclipse с помощта на Java

  5. Справяне с дублирани първични ключове при вмъкване в SQLAlchemy (декларативен стил)