sql >> Databasteknik >  >> RDS >> Sqlserver

Flera index vs index med flera kolumner

Jag håller med Cade Roux.

Den här artikeln bör få dig på rätt spår:

  • Index i SQL Server 2005/2008 – bästa praxis, del 1
  • Index i SQL Server 2005/2008 – Del 2 – Internal

En sak att notera, klustrade index bör ha en unik nyckel (en identitetskolumn jag skulle rekommendera) som den första kolumnen. I grund och botten hjälper det dina data att infogas i slutet av indexet och inte orsaka massor av disk-IO och siddelningar.

För det andra, om du skapar andra index på dina data och de är konstruerade på ett smart sätt kommer de att återanvändas.

t.ex. tänk dig att du söker i en tabell på tre kolumner

stat, län, zip.

  • ibland söker du bara efter stat.
  • ibland söker du efter stat och län.
  • du söker ofta efter stat, län, postnummer.

Sedan ett index med stat, län, zip. kommer att användas i alla tre dessa sökningar.

Om du söker med zip enbart ganska mycket kommer ovanstående index inte att användas (av SQL Server i alla fall) eftersom zip är den tredje delen av det indexet och frågeoptimeraren kommer inte att se det indexet som användbart.

Du kan sedan skapa ett index på enbart Zip som skulle användas i det här fallet.

Förresten Vi kan dra fördel av det faktum att med indexering med flera kolumner är den första indexkolumnen alltid användbar för sökning och när du bara söker efter 'state' är den effektiv men ändå inte lika effektiv som index med en kolumn på 'tillstånd '

Jag antar att svaret du letar efter är att det beror på var-klausulerna i dina ofta använda frågor och även din gruppby-s.

Artikeln kommer att hjälpa mycket. :-)



  1. MySQL SELECT DISTINCT flera kolumner

  2. SQL:skillnad mellan två datum

  3. Hur undkommer man strängar i SQL Server med PHP?

  4. Hur man visar serversorteringen i SQL Server (T-SQL)