Sdílet prostřednictvím


Vytváření indexů s zahrnutými sloupci

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Tento článek popisuje, jak přidat zahrnuté (nebo neklíčové) sloupce pro rozšíření funkčnosti neclusterovaných indexů v SQL Serveru pomocí aplikace SQL Server Management Studio nebo Transact-SQL. Zahrnutím sloupců bez klíče můžete vytvořit neclusterované indexy, které pokrývají více dotazů. Je to proto, že sloupce bez klíče mají následující výhody:

  • Mohou to být datové typy, které nejsou povoleny jako sloupce klíče indexu.
  • Není brán v úvahu databázovým strojem při výpočtu počtu sloupců klíče indexu nebo velikosti klíče indexu.

Index s neklíčovými sloupci může výrazně zlepšit výkon dotazů, pokud jsou všechny sloupce v dotazu zahrnuty do indexu jako klíčové nebo neklíčové sloupce. Zvýšení výkonu se dosahuje, protože optimalizátor dotazů může vyhledat všechny hodnoty sloupců v indexu; Data tabulek nebo clusterovaných indexů nejsou přístupná, což vede k menšímu počtu vstupně-výstupních operací disku.

Note

Pokud index obsahuje všechny sloupce odkazované dotazem, obvykle se označuje jako pokrytí dotazu.

Doporučení k návrhu

  • Přepracujte neclusterované indexy, které mají velký klíč indexu, tak, aby klíčovými sloupci byly pouze ty sloupce, které jsou používány pro vyhledávání a dohledávání. Nastavte všechny ostatní sloupce, které dotaz pokrývají, do sloupců bez klíče. Tímto způsobem budete mít všechny sloupce potřebné k pokrytí dotazu, ale samotný klíč indexu je malý a efektivní.

  • Do neclusterovaného indexu zahrňte neklíčové sloupce, abyste předešli překročení omezení aktuální velikosti indexu maximálně 32 klíčových sloupců a maximální velikosti klíče indexu 1 700 bajtů (16 klíčových sloupců a 900 bajtů před SQL Serverem 2016 (13.x)). Databázový stroj při výpočtu počtu sloupců klíče indexu nebo velikosti klíče indexu nebere v úvahu neklíčové sloupce.

  • Pořadí neklíčových sloupců v definici indexu nemá vliv na výkon dotazů, které index používají.

  • Vyhněte se velmi širokým neclusterovaným indexům, ve kterých zahrnuté sloupce nepředstavují dostatečně úzkou podmnožinu sloupců podkladové tabulky. Pokud přidáváte široké indexy, vždy ověřte, jestli náklady na aktualizaci jednoho extra širokého indexu posunou náklady na čtení přímo z tabulky.

Omezení

  • Neklíčové sloupce lze definovat pouze u neclusterovaných indexů.

  • Všechny datové typy kromě textu, ntextu a obrázku lze použít jako sloupce bez klíče.

  • Počítané sloupce, které jsou deterministické a přesné nebo nepřesné, můžou být neklíčové sloupce. Další informace najdete v tématu Indexy ve vypočítaných sloupcích.

  • Počítané sloupce odvozené z obrázku, ntextu a textových datových typů můžou být neklíčové sloupce, pokud je datový typ počítaného sloupce povolený jako sloupec indexu bez klíče.

  • Neklíčové sloupce nelze z tabulky vynechat, pokud se index této tabulky nezahodí jako první.

  • Neklíčové sloupce nelze změnit, s výjimkou následujících kroků:

    • Změňte hodnotu null ve sloupci z NOT NULL na NULL.

    • Zvětšete délku sloupců varchar, nvarchar nebo varbinary .

Zabezpečení

Permissions

Vyžaduje oprávnění ALTER pro tabulku nebo zobrazení. Uživatel musí být členem pevné serverové role sysadmin nebo pevné databázové role db_ddladmin a db_owner.

Vytvoření indexu s neklíčovými sloupci pomocí aplikace SQL Server Management Studio

  1. V Průzkumníku objektů vyberte znaménko plus a rozbalte databázi obsahující tabulku, na které chcete vytvořit index s neklíčovými sloupci.

  2. Klikněte na znaménko plus a rozbalte složku Tabulky.

  3. Výběrem znaménka plus rozbalte tabulku, na které chcete vytvořit index s neklíčovými sloupci.

  4. Klikněte pravým tlačítkem na složku Indexy, přejděte na Nový indexa vyberte Neskupený index....

  5. V dialogovém okně Nový index zadejte na stránce Obecné název nového indexu do pole Název indexu.

  6. V záložce Sloupce klíčů indexu vyberte možnost Přidat....

  7. V dialogovém okně Vybrat sloupce z zaškrtněte políčko nebo políčka sloupců tabulky, které chcete přidat do indexu.

  8. Vyberte OK.

  9. Na kartě Zahrnuté sloupce vyberte Přidat....

  10. V dialogovém okně Vybrat sloupce ztable_name zaškrtněte políčko nebo zaškrtávací políčka sloupce tabulky nebo sloupců, které se mají přidat do indexu jako neklíčové sloupce.

  11. Vyberte OK.

  12. V dialogovém okně Nový index vyberte OK.

Vytvoření indexu s neklíčovými sloupci pomocí Transact-SQL

  1. V Průzkumníku objektůse připojte k instanci databázového stroje.

  2. Na panelu Standard vyberte Nový dotaz.

  3. Zkopírujte a vložte následující příklad do okna dotazu a vyberte Spustit.

    USE AdventureWorks2022;
    GO
    -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns.
    -- index key column is PostalCode and the nonkey columns are
    -- AddressLine1, AddressLine2, City, and StateProvinceID.
    CREATE NONCLUSTERED INDEX IX_Address_PostalCode
    ON Person.Address (PostalCode)
    INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
    GO