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

Индекси и първични ключове с много колони

Не съм запознат отблизо с вътрешните елементи на индексите в mySql, но в двата продукта на доставчици на бази данни, които познавам (MsSQL, Oracle) индексите са балансирани структури на дърво, чиито възли са организирани като последователен набор от колони, индексът е дефиниран на (В дефинираната последователност )

Така че, освен ако mySql не го направи много различно (вероятно не), всеки съставен индекс (в повече от една колона) може да може да се използва от всяка заявка, която трябва да филтрира или сортира по подмножество от колоните в индекса, стига списъкът с колони да е съвместим, т.е. ако колоните, когато са подредени по същия начин като последователния списък от колони в пълния индекс, е подредено подмножество от пълния набор от индексни колони, който започва в началото на действителната индексна последователност, без празнини освен в края...

С други думи, това означава, че ако имате индекс за (a,b,c,d), заявка, която филтрира по (a), (a,b) или (a,b,c), също може да използва индекса , но заявка, която трябва да филтрира по (b), или (c) или (b,c), няма да може да използва индекса...

Така че във вашия случай, ако често трябва да филтрирате или сортирате по колона item сам, трябва да добавите друг индекс към тази колона сам...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ключове, MUL срещу PRI срещу UNI

  2. PHP групово вмъкване foreach

  3. mysql извлича година от формат за дата

  4. Mysql:Изпълнение на НЕ СЪЩЕСТВУВА. Възможно ли е да се подобри производителността?

  5. Преобразувайте колоната varchar към дата в mysql на ниво база данни