sql >> Databáze >  >> RDS >> Sqlserver

Vícenásobné indexy vs vícesloupcové indexy

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. :-)



  1. Začínáme s Oracle SQL Developer v systému Windows

  2. Vytváření studeného pohotovostního režimu databáze MySQL nebo MariaDB na Amazon AWS

  3. mysqli_query() očekává alespoň 2 parametry, z nichž 1 je uveden v?

  4. Začínáme Ladění výkonu v Azure SQL Database