sql >> Database >  >> RDS >> Sqlserver

Meerdere indexen versus indexen met meerdere kolommen

Ik ben het eens met Cade Roux.

Dit artikel zou je op het goede spoor moeten zetten:

  • Indexen in SQL Server 2005/2008 – Best Practices, Part 1
  • Indexen in SQL Server 2005/2008 – Deel 2 – Intern

Een ding om op te merken is dat geclusterde indexen een unieke sleutel (een identiteitskolom die ik zou aanbevelen) als de eerste kolom moeten hebben. P>

Ten tweede, als u andere indexen op uw gegevens maakt en deze slim zijn geconstrueerd, zullen ze opnieuw worden gebruikt.

bijv. stel je voor dat je een tabel zoekt op drie kolommen

staat, provincie, postcode.

  • je zoekt soms alleen op staat.
  • je zoekt soms op staat en provincie.
  • u zoekt vaak op staat, provincie, postcode.

Dan een index met staat, provincie, postcode. wordt gebruikt in alle drie deze zoekopdrachten.

Als u vrij veel op zip alleen zoekt, wordt de bovenstaande index niet gebruikt (in ieder geval door SQL Server) omdat zip het derde deel van die index is en de query-optimizer die index niet als nuttig zal beschouwen.

U zou dan alleen een index op Zip kunnen maken die in dit geval zou worden gebruikt.

We kunnen trouwens profiteren van het feit dat bij indexering met meerdere kolommen de eerste indexkolom altijd bruikbaar is voor zoeken en wanneer u alleen op 'staat' zoekt, is het efficiënt, maar toch niet zo efficiënt als index met één kolom op 'staat' '

Ik denk dat het antwoord dat u zoekt, is dat het afhangt van uw waar-clausules van uw veelgebruikte zoekopdrachten en ook van uw group by's.

Het artikel zal veel helpen. :-)



  1. Getallen opmaken met komma's in MySQL

  2. Advies vragen :Eén volgorde voor alle tabellen

  3. Een nummer "unhexen" in MySQL

  4. Achterwaartse scan van SQL Server Index:inzicht en prestatieafstemming