sql >> Databasteknik >  >> RDS >> Mysql

MySQL - index för flera kolumner

Den allmänna tumregeln för index är att slå en på vilket fält som helst som används i en WHERE eller JOIN klausul.

Som sagt, det finns några optimeringar du kan göra. Om du VET att en viss kombination av fält är den enda som någonsin kommer att användas i WHERE på en viss tabell, då kan du skapa en enda flerfältsnyckel på just dessa fält, t.ex.

INDEX (field1, field2, field5)

v.s.

INDEX (field1),
INDEX (field2),
INDEX (field5)

Ett flerfältsindex kan vara mer effektivt i många fall, jämfört med att behöva skanna flera index. Nackdelen är att flerfältsindexet endast är användbart om fälten i fråga faktiskt används i en WHERE-sats.

Med dina exempelfrågor, eftersom element och field_id finns i alla tre indexen, kan det vara bättre att dela upp dem i ett eget dedikerat index. Om dessa är föränderliga fält är det bättre att behålla det som sitt eget dedikerade index. t.ex. om du någonsin måste ändra field_id i bulk måste DB uppdatera 3 olika index, v.s. uppdaterar bara en dedikerad.

Men allt handlar om benchmarking – testa just din setup med olika indexinställningar och se vilken som presterar bäst. Tumregler är praktiska, men fungerar inte till 100 % av tiden.




  1. SQLSTATE[42000]:Syntaxfel eller åtkomstöverträdelse:1064

  2. Hur kan jag lösa dessa radfel på MySQL Workbench?

  3. Hur du dokumenterar din SQL Server-databas

  4. Oracle Partitioned Sequence