Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

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.