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

SQL Server – Kdy použít klastrovaný vs neklastrovaný index?

Chci jen upozornit:velmi opatrně vyberte svůj seskupený index! Každá „běžná“ datová tabulka by měla mít seskupený index, protože shlukovaný index skutečně urychluje mnoho operací – ano, zrychluje , dokonce i vkládá a maže! Ale pouze pokud vyberete dobrý seskupený index.

Je to nejvíce replikované datovou strukturu v databázi SQL Server. Clusterovací klíč bude také součástí každého neklastrovaného indexu ve vaší tabulce.

Při výběru klastrovacího klíče byste měli být extrémně opatrní – mělo by to být:

  • úzká (ideální 4 bajty)

  • jedinečné (je to koneckonců „ukazatel řádku“. Pokud jej neuděláte jedinečným, SQL Server to udělá za vás na pozadí, což vás bude stát několik bajtů za každou položku krát počet řádků a počet neshlukovaných indexů, které mít – to může být velmi nákladné!)

  • statické (nikdy neměňte – pokud je to možné)

  • v ideálním případě stále rostoucí takže neskončíte s hroznou fragmentací indexu (GUID je úplný opak dobrého klastrovacího klíče – z tohoto konkrétního důvodu)

  • měl by být bez možnosti null a v ideálním případě by měl mít také pevnou šířku - varchar(250) vytváří velmi špatný shlukovací klíč

Cokoli jiného by skutečně mělo být na druhé a třetí úrovni důležitosti za těmito body ....

Podívejte se na některé knihy Kimberly Tripp (The Queen of Indexing ) blogové příspěvky na toto téma - vše, co napsala na svůj blog, je naprosto neocenitelné - přečtěte si to, prožijte to - žijte tím!




  1. Oracle SQL - Použití spojení k nalezení hodnot v jedné tabulce a ne v jiné

  2. Přístup odepřen uživateli 'www-data'@'localhost – jak se s tím vypořádat?

  3. Jak získat aktuální objekt Connection v Spring JDBC

  4. Proč si Oracle 10g nestěžuje na nejednoznačnost sloupců?