sql >> Databasteknik >  >> RDS >> Mysql

När ska man lägga till ett index på ett SQL-tabellfält (MySQL)?

Det är inte alltid entydigt var man ska använda index i SQL-tabeller. Men det finns några allmänna tumregler som kan hjälpa dig att bestämma dig i de flesta fall.

  1. Sätt index på kolumner som används i where-satser
  2. Sätt index på kolumner som du använder för att gå med.
  3. Försök att inte använda fler än 4-5 index på kolumner i samma tabell.

Och de allmänna begreppen som du bör tänka på är:

  1. Alla index som du använder kommer att göra sökningar i dessa kolumner snabbare.
  2. Alla index som du lägger till som gör att infogningen i tabellen går lite långsammare.
  3. Från de två föregående. Det är ditt ansvar att bestämma hur många infogningar och frågor du gör i tabeller för att bestämma om du ska använda index och i vilka kolumner eller inte.

REDIGERA

@AndrewLazarus kommentar är verkligen viktig och jag bestämde mig för att lägga till den i svaret:

  1. Använd inte index på kolumner med bara ett fåtal olika värden. Till exempel en kolumn som har ett tillstånd, när det bara finns ett fåtal tillstånd, eller ett booleskt värde. Anledningen till att inte göra det är att indexet inte riktigt hjälper dig eftersom det bara kommer att delas med antalet värden, och eftersom du bara har ett fåtal av dem kommer det inte att finnas någon verklig fördel. Tabellen skulle förbruka mer utrymme med indexet och förformas långsammare vid infogning, men du kommer inte att få signifikant bättre prestanda när du frågar


  1. MySql kan inte göra kolumn auto_increment

  2. sök efter flera nyckelord med php och mysql (där X gillar)

  3. JDBC PreparedStatement resulterar i MySQL-syntaxfel

  4. Fråga två tabeller från olika scheman