Index pomáhá serveru SQL Server rychle načítat data z řádků. Rejstříky fungují jako obsah na začátku knihy a umožňují vám rychle vyhledat stránku, na které se téma nachází. Bez indexů musí SQL Server prohledat všechny řádky v tabulce, aby našel záznam.
SQL Server má dva typy indexů: seskupený a bez clusterů. Zjistěte, jaký je rozdíl mezi seskupenými a neklastrovanými indexy a proč jsou důležité.
Clustered Index v SQL Server
V seskupeném indexu jsou datové řádky fyzicky uloženy uspořádaným způsobem na základě hodnoty klíče. Protože index obsahuje tabulku a může uspořádat řádky pouze v jednom pořadí, můžete vytvořit pouze jeden seskupený index na tabulku.
Zatímco indexy zrychlují načítání řádků v rozsahu, Příkazy INSERT a UPDATE může být pomalé, protože optimalizátor dotazů prohledává index v pořadí, dokud nenajde cílový index.
Neklastrovaný index na serveru SQL Server
Neklastrovaný index obsahuje hodnoty klíče, jejichž vstupem je ukazatel nazývaný lokátor řádků. U seskupených tabulek (tabulek se seskupeným indexem) ukazuje ukazatel na klíč v seskupeném indexu, který zase ukazuje na řádek v tabulce. U řádků bez seskupeného indexu ukazuje ukazatel přímo na řádek tabulky.
Jak vytvořit seskupený index na serveru SQL Server
Když vytvoříte tabulku s primárním klíčem, SQL Server automaticky vytvoří klíč clusteru indexu na základě tohoto primárního klíče. Pokud nemáte primární klíč, můžete provést následující příkaz a vytvořit seskupený indexový klíč.
VYTVOŘIT SKUPOVANÝ INDEX <indexnázev>
NA STOLE <název_tabulky>(název_sloupce)
V tomto příkazu zadáváte název indexu, název tabulky, ve které se má vytvořit, a název sloupce, který se má v indexu použít.
Pokud přidáte primární klíč do tabulky, která již má seskupený index, SQL Server s ním vytvoří index bez seskupení.
Chcete-li vytvořit seskupený index, který nezahrnuje sloupec primárního klíče, musíte nejprve zrušit omezení primárního klíče.
POUŽITÍjméno databáze
ZMĚNITSTŮL název_tabulky
POKLESOMEZENÍ pk_name
JÍT
Odstraněním omezení primárního klíče také odeberete seskupený index, což vám umožní vytvořit vlastní.
Jak vytvořit index bez clusterů na serveru SQL Server
Chcete-li vytvořit index bez klastrů, použijte následující příkaz.
VYTVOŘITINDEX <indexnázev>
NA STOLE <název_tabulky>(název_sloupce)
Můžete také použít klíčové slovo NONCLUSTERED takto:
VYTVOŘIT [NEZAHRNUTÝ] INDEX <indexnázev>
NA STOLE <název_tabulky>(název_sloupce)
Tento příkaz vytvoří neklastrovaný index v tabulce, kterou určíte, a zahrnuje sloupec, který zadáte.
Pokud chcete, můžete sloupce seřadit vzestupně (ASC) nebo sestupně (DESC).
VYTVOŘIT [NEZAHRNUTÝ] INDEX <indexnázev>
NA STOLE <název_tabulky>(název_sloupce ASC/DESC)
Jaký index byste si měli vybrat?
Clusterované i neklastrované indexy zkracují dobu dotazování. Pokud většinu vašich dotazů tvoří operace SELECT na několika sloupcích v tabulce, jsou seskupené indexy rychlejší. Pro operace INSERT nebo UPDATE jsou však indexy bez klastrů rychlejší, protože optimalizátor dotazů může najít sloupec přímo z indexu.
Jak vidíte, tyto indexy fungují nejlépe různé SQL dotazy. Většina databází SQL bude proto těžit z toho, že bude mít alespoň jeden seskupený index a neshlukované indexy pro sloupce, které jsou pravidelně aktualizovány.
Význam indexů v SQL Server
Seskupené a neseskupené indexy vedou k vyššímu výkonu dotazů. Když spustíte dotaz, optimalizátor dotazů prohledá index pro umístění úložiště řádku a poté z tohoto umístění načte informace. Je to mnohem rychlejší než skenování všech řádků v tabulce.
Neklastrované indexy můžete také použít k vyřešení zablokování vyhledávání záložek vytvořením neklastrovaného indexu pro sloupce, ke kterým mají dotazy přístup.