Souhlasím s Cadem Rouxem.
Tento článek by vás měl dostat na správnou cestu:
- Indexy v SQL Server 2005/2008 – doporučené postupy, část 1
- Indexy v SQL Server 2005/2008 – Část 2 – Interní informace
Je třeba poznamenat jednu věc, klastrované indexy by měly mít jedinečný klíč (doporučuji sloupec identity) jako první sloupec. V zásadě to pomáhá vkládání dat na konec indexu a nezpůsobuje mnoho IO disku a rozdělení stránek.
Za druhé, pokud na svých datech vytváříte další indexy a jsou chytře konstruovány, budou znovu použity.
např. představte si, že prohledáváte tabulku ve třech sloupcích
stát, kraj, zip.
- někdy vyhledáváte pouze podle státu.
- někdy vyhledáváte podle státu a okresu.
- často vyhledáváte podle státu, okresu, PSČ.
Pak index se státem, okresem, PSČ. bude použit ve všech třech těchto vyhledáváních.
Pokud často vyhledáváte pouze podle zipu, výše uvedený index nebude použit (tak jako tak SQL Server), protože zip je třetí částí tohoto indexu a optimalizátor dotazů nebude tento index považovat za užitečný.
Pak byste mohli vytvořit index pouze na Zip, který by byl použit v tomto případě.
Mimochodem Můžeme využít toho, že při vícesloupcovém indexování je první sloupec indexu vždy použitelný pro vyhledávání a když hledáte pouze podle 'stavu', je efektivní, ale přesto ne tak efektivní jako Single-Column index na 'stav '
Myslím, že odpověď, kterou hledáte, je, že záleží na vašich klauzulích kde vašich často používaných dotazů a také na vaší skupině podle.
Článek hodně pomůže. :-)