sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Skillnad mellan `... ADD INDEX(a); ... ADD INDEX(b);` och `... ADD INDEX(a,b);`?

Det kombinerade INDEX är en kombination av tangenterna "a" och "b". Det förbättrar åtkomsten avsevärt om antingen "a" eller "a" OCH "b" är en del av sökuttrycket.

Det här indexet är inte användbart om du bara anger "b" i dina SQL-satser.

Därför kan det vara användbart att tillhandahålla två olika index - men de bör använda olika namn.

Beroende på åtkomstmönstren skulle jag rekommendera ett index på "a" och "b" och ett ytterligare index på "b" om detta matchar dina behov.

Tänk på att varje ytterligare index saktar ner databasen på alla operationer som ändrar data. Ibland är det bättre att hålla några index borta. Det är normalt ett bra råd att INTE ANVÄNDA index på någon kolumn i en tabell.

Ett tips till:för att avgöra om ett INDEX(a,b) eller INDEX(b,a) ska användas, ta en titt på distributionen av dina data. Placera värdena med den högre spridningen av olika värden i den första kolumnen i indexet för att öka selektiviteten för det indexet. Detta värde baseras normalt på kvaliteten på det första indexelementet.

Till exempel bör ett index på kolumnerna NAME och SEX skapas som INDEX(NAME, SEX) eftersom det finns många fler namn som skiljer sig åt mellan könen?



  1. Få Visa information med VIEWS Information Schema View i SQL Server

  2. Begäran som skickades av klienten var syntaktisk felaktig med @DateTimeFormat

  3. PostgreSQL - gör att två transaktioner körs samtidigt

  4. Konvertera postgresql hstore till php-array