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

Halda SQL Server v.s. shlukovaný index

Úložiště haldy nemá nic společného s těmito haldami .

Halda znamená, že samotné záznamy nejsou seřazeny (tj. nejsou vzájemně propojeny).

Když vložíte záznam, vloží se pouze do volného místa, které databáze najde.

Aktualizace řádku v tabulce založené na hromadě neovlivní ostatní záznamy (ačkoli ovlivní sekundární indexy)

Pokud vytvoříte sekundární index na HEAP tabulka RID (druh fyzického ukazatele na úložný prostor) se používá jako ukazatel řádku.

Seskupený index znamená, že záznamy jsou součástí B-Tree . Když vložíte záznam, B-Tree je třeba znovu propojit.

Aktualizace řádku v seskupené tabulce způsobí opětovné propojení B-stromu, tj. E. aktualizace interních ukazatelů v jiných záznamech.

Pokud vytvoříte sekundární index na seskupené tabulce, použije se hodnota klíče seskupeného indexu jako ukazatel řádku.

To znamená, že seskupený index by měl být jedinečný. Pokud seskupený index není jedinečný, speciální skrytý sloupec nazvaný uniquifier je připojen k indexovému klíči, díky kterému je if jedinečný (a větší co do velikosti).

Za zmínku také stojí, že vytvořením sekundárního indexu na sloupci se hodnoty nebo klíč seskupeného indexu stanou součástí klíče sekundárního indexu.

Vytvořením indexu na seskupené tabulce ve skutečnosti vždy získáte složený index

CREATE UNIQUE CLUSTERED INDEX CX_mytable_1234 (col1, col2, col3, col4)

CREATE INDEX IX_mytable_5678 (col5, col6, col7, col8)

Index IX_mytable_5678 je ve skutečnosti index v následujících sloupcích:

col5
col6
col7
col8
col1
col2
col3
col4

Má to ještě jeden vedlejší účinek:

A DESC podmínka v jednosloupcovém indexu v klastrované tabulce dává smysl v SQL Server

Tento index:

CREATE INDEX IX_mytable ON mytable (col1)

lze použít v dotazu, jako je tento:

SELECT  TOP 100 *
FROM    mytable
ORDER BY
       col1, id

, zatímco tento:

CREATE INDEX IX_mytable ON mytable (col1 DESC)

lze použít v dotazu, jako je tento:

SELECT  TOP 100 *
FROM    mytable
ORDER BY
       col1, id DESC


  1. postgresql trigger:deaktivuje automatické potvrzení a nastaví úroveň izolace

  2. Nasaďte aplikaci Django bez přerušení služby / bez prostojů

  3. Jak mohu načíst seznam parametrů z uložené procedury na serveru SQL Server

  4. Uložená procedura volání PHP-OCI s parametry