sql >> Database >  >> RDS >> Mysql

Indexen en primaire sleutels met meerdere kolommen

Ik ben niet goed bekend met de interne onderdelen van indices op mySql, maar van de twee databaseleveranciersproducten die ik ken (MsSQL, Oracle) zijn indices gebalanceerde boomstructuren, waarvan de knooppunten zijn georganiseerd als een opeenvolgend tupel van de kolommen die de index is gedefinieerd op (In de volgorde gedefinieerd )

Dus, tenzij mySql het heel anders doet (waarschijnlijk niet), kan elke samengestelde index (op meer dan één kolom) kan bruikbaar zijn voor elke zoekopdracht die moet worden gefilterd of gesorteerd op een subset van de kolommen in de index, zolang de lijst met kolommen compatibel is, d.w.z. als de kolommen, wanneer de volgorde gelijk is aan de volgorde van de kolommen in de volledige index, een geordende subset is van de volledige set indexkolommen, die begint aan het begin van de eigenlijke indexreeks, zonder hiaten behalve aan het einde...

Met andere woorden, dit betekent dat als je een index hebt op (a,b,c,d) een zoekopdracht die filtert op (a), (a,b) of (a,b,c) ook de index kan gebruiken , maar een zoekopdracht die moet worden gefilterd op (b), of (c) of (b,c) kan de index niet gebruiken...

Dus in jouw geval, als je vaak moet filteren of sorteren op kolom item alleen, je moet zelf nog een index aan die kolom toevoegen...



  1. Parameters doorgeven aan mysql-querycallback in nodejs

  2. MYSQL Afgekapte onjuiste DOUBLE-waarde

  3. Alle items in één tabel selecteren en deelnemen aan een andere tafel, waarbij nulls worden toegestaan

  4. Aansluiten Snowflake DB &IRI Workbench