sql >> Databáze >  >> RDS >> Mysql

Indexy a vícesloupcové primární klíče

Nejsem důvěrně obeznámen s vnitřními prvky indexů na mySql, ale na dvou produktech dodavatelů databází, které znám (MsSQL, Oracle), jsou indexy vyvážené stromové struktury, jejichž uzly jsou organizovány jako sekvenovaná n-tice sloupců. index je definován na (In the Sequence Defined )

Takže pokud to mySql nedělá úplně jinak (pravděpodobně ne), jakýkoli složený index (ve více než jednom sloupci) může být použitelné pro jakýkoli dotaz, který potřebuje filtrovat nebo třídit podle podmnožiny sloupců v indexu, pokud je seznam sloupců kompatibilní, tj. pokud jsou sloupce seřazené stejně jako seřazený seznam sloupců v úplném indexu uspořádanou podmnožinou úplné sady sloupců indexu, který začíná na začátku aktuální sekvence indexu, bez mezer kromě konce...

Jinými slovy to znamená, že pokud máte index na (a,b,c,d), dotaz, který filtruje podle (a), (a,b) nebo (a,b,c), může index také používat , ale dotaz, který potřebuje filtrovat podle (b), nebo (c) nebo (b,c), nebude moci index použít...

Tedy ve vašem případě, pokud často potřebujete filtrovat nebo třídit podle sloupce položka samotný, musíte do tohoto sloupce přidat další index sám o sobě...



  1. MySql udělte uživateli oprávnění

  2. Jak zacházet s cizím klíčem při rozdělování

  3. Jak získat aktuální verzi systému správy databází MySQL (DBMS)?

  4. Může cizí klíč odkazovat na nejedinečný index?