Obecně by moje strategie indexování byla asi tato (prozatím používám výhradně SQL Server - podle potřeby se přizpůsobte vlastnímu databázovému systému):
-
vybrat dobré klastrovací klíč – ne GUID, ne
VARCHAR(250)
nebo něco – dobré klíč clusteringu je úzký, jedinečný, stabilní, neustále se zvyšující - něco jakoINT IDENTITY
je perfektní. Udělá to váš primární klíč v clusteru -> vám poskytne váš první index v tabulce -
pro každý sloupec, který se používá jako cizí klíč do jiné tabulky - přidejte index. Může to být buď index s jedním sloupcem - nebo to může být složený index - podle toho, co je pro váš případ nejvhodnější. Je důležité, aby byl sloupec cizího klíče první sloupec v tomto indexu (pokud používáte složený index) – jinak výhody pro
JOIN
's nebo pro kontrolu referenční integrity nebudou pro váš systém dostupné
A to je pro tuto chvíli vše.
Poté:spusťte svůj systém - pozorujte a měřte - stanovte základní linii. Je aplikace dostatečně rychlá? Pokud ano -> jste hotovi - jděte domů a užijte si svůj volný čas.
Pokud ne:začněte shromažďovat data a indikace, proč aplikace není dostatečně rychlá. Podívejte se např. věci jako DMV v SQL Server, které vám říkají o dotazech s nejhorším výkonem, nebo chybějící index DMV . Analyzujte je. Podívejte se, co byste mohli zlepšit. Přidávejte podle jednoho indexu a znovu:pozorujte, měřte a porovnejte se svou základní linií.
Pokud máte zlepšení -> ponechte tento index na místě a toto měření je vaší novou základní linií. Opláchněte a opakujte, dokud nebudete vy (a vaši uživatelé) s výkonem aplikace spokojeni (a pak jít domů a užít si volno).
Nadměrné indexování na serveru SQL Server může být horší než nemít žádné indexy. Nezačínejte s příliš mnoha indexy pro začátek! Nastavit pouze dobré clusterovaný PK a cizí klíč neshlukované indexy – to je vše – pak tento cyklus pozorujte, měřte, optimalizujte a opakujte.