sql >> Database >  >> RDS >> Mysql

Wanneer moet ik een samengestelde index gebruiken?

U moet een samengestelde index gebruiken wanneer u query's gebruikt die hiervan profiteren. Een samengestelde index die er als volgt uitziet:

index( column_A, column_B, column_C )

zal profiteren van een query die deze velden gebruikt voor samenvoegen, filteren en soms selecteren. Het komt ook ten goede aan query's die gebruik maken van de meest linkse subsets van kolommen in die samenstelling. Dus de bovenstaande index zal ook voldoen aan vragen die

index( column_A, column_B, column_C )
index( column_A, column_B )
index( column_A )

Maar het zal niet (althans niet direct, misschien kan het gedeeltelijk helpen als er geen betere indices zijn) helpen voor vragen die moeten

index( column_A, column_C )

Merk op hoe kolom_B ontbreekt.

In uw oorspronkelijke voorbeeld komt een samengestelde index voor twee dimensies vooral ten goede aan zoekopdrachten die op beide dimensies of de meest linkse dimensie afzonderlijk zoeken, maar niet de meest rechtse dimensie op zich. Als u altijd twee dimensies zoekt, is een samengestelde index de beste keuze, het maakt niet echt uit welke de eerste is (waarschijnlijk).



  1. Hoe UNIX_TIMESTAMP() werkt in MariaDB

  2. "Query niet toegestaan ​​in Waitfor" Fout 101 in SQL Server

  3. Hoe csv-strings het beste te splitsen in oracle 9i

  4. Regex-patroon in de functie SQL Replace?