sql >> Databasteknik >  >> RDS >> Mysql

Index och primärnycklar med flera kolumner

Jag är inte riktigt bekant med indexens interna funktioner på mySql, men på de två databasleverantörsprodukterna som jag är bekant med (MsSQL, Oracle) är index balanserade trädstrukturer, vars noder är organiserade som en sekvenserad tuppel av kolumnerna index definieras på (I sekvensen definierad )

Så om inte mySql gör det väldigt annorlunda (förmodligen inte), kan alla sammansatta index (på mer än en kolumn) kan vara användbar för alla frågor som behöver filtrera eller sortera efter en delmängd av kolumnerna i indexet, så länge listan med kolumner är kompatibel, d.v.s. om kolumnerna, när de är sekvenserade på samma sätt som den sekvenserade listan med kolumner i det fullständiga indexet, är en ordnad delmängd av den fullständiga uppsättningen av indexkolumner, som börjar i början av den faktiska indexsekvensen, utan luckor förutom i slutet...

Med andra ord betyder detta att om du har ett index på (a,b,c,d) kan en fråga som filtrerar på (a), (a,b) eller (a,b,c) också använda indexet , men en fråga som behöver filtrera på (b), eller (c) eller (b,c) kommer inte att kunna använda indexet...

Så i ditt fall, om du ofta behöver filtrera eller sortera på kolumnen objekt ensam måste du lägga till ytterligare ett index på den kolumnen för sig...



  1. Hur får man överordnad tabell, referenstabell, namn på främmande nyckelbegränsningar och kolumner i SQL Server - SQL Server / TSQL självstudie del 71

  2. Jquery autocomplete och PHP:fyller i inmatningsfält med data från mySQL-databas baserat på valt alternativ i autocomplete-fältet

  3. Summera en kommaseparerad kolumn i MySQL 4 (inte 5)

  4. SQL-Server och MySQL interoperabilitet?