/ / Kolejność sortowania kolumn MS SQL Index ma znaczenie? - sql-server, indeksowanie

Kolejność sortowania kolumny MS SQL Index ma znaczenie? - serwer sql, indeksowanie

Mam bazę danych, w której uruchamiam program profilujący idoradca bazy danych w celu poprawy wydajności bazy danych. Zrobiłem i do tej pory tak dobrze, doradca przedstawił mi wiele indeksów i statystyk, które można utworzyć, aby uzyskać lepszą wydajność. Ale czytając wypowiedzi, na które wpadłem:

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K3_K7_K1_K5] ON [dbo].[xinfobaseacl]
(
[lviewid] ASC,
[lparentid] ASC,
[lid] ASC,
[xlactor] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
go

CREATE NONCLUSTERED INDEX [_dta_index_xinfobaseacl_11_397426127__K7_K5_K1_K3] ON [dbo].[xinfobaseacl]
(
[lparentid] ASC,
[xlactor] ASC,
[lid] ASC,
[lviewid] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
go

Ta sama tabela, te same kolumny, te same parametry, tylko inna kolejność sortowania kolumn ...

Więc jestem zdezorientowany, czy porządek sortowania naprawdę ma znaczenie przy tworzeniu indeksu?

Odpowiedzi:

2 dla odpowiedzi № 1

Tak, kolejność kolumn w złożonym indeksie ma znaczenie.

Oba będą działać równie dobrze dla predykatu równości na wszystkich 4 kolumnach.

Ale pierwszy będzie dodatkowo obsługiwał zapytania takie jak

WHERE lviewid =  1 AND lparentid 1 AND lid = 1
ORDER BY xlactor

Drugi obsługuje zapytania takie jak

WHERE parentid =  1 AND xlactor = 1
ORDER BY lid, xlactor

To, czy powinieneś utworzyć oba indeksy, zależy od obciążenia. Czy przekazałeś DTA reprezentatywne obciążenie, w tym oświadczenia o modyfikacji danych?


1 dla odpowiedzi nr 2

„Mylicie terminologie. Kolejność sortowania nie ma wielkiego, jeśli w ogóle, wpływu, ale kolejność kolumn w indeksie może być ważna.

Prawidłowa kolejność kolumn dla indeksu złożonego zależy od zapytania, ale z reguły kolumna z najmniejszą liczbą różnych wartości powinna być pierwsza.