/ / MS SQL индекс колона ред ред въпроси? - sql-сървър, индексиране

MS SQL индекс колона сортиране ред значение? - sql-сървър, индексиране

Имам база данни, в която изпълнявам профилиране исъветник на базата данни за подобряване на работата на базата данни. Направих и досега добре, съветникът ми представи много индекси и статистики, които могат да бъдат създадени, за да получат по-добра производителност. Но четейки изявленията, в които се сблъсках:

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

Същата таблица, същите колони, същите параметри, просто друг ред на сортиране на колоните ...

Така че аз съм объркан, дали редът на сортиране наистина има значение в създаването на индекс ???

Отговори:

2 за отговор № 1

Да редът на колоните в съставния индекс е от значение.

И двете ще работят еднакво добре за предиката за равенство във всички 4 колони.

Но първата ще подкрепи заявки като

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

А втората ще подкрепи заявки като

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

Дали трябва да създадете и двата индекса зависи от натоварването ви. Подадохте ли DTA на представително работно натоварване, включително изявления за промяна на данните?


1 за отговор № 2

Вие "обърквате терминологията. Редът за сортиране няма голям, ако има такъв, засяга, но редът на колоните в индекса може да бъде важен.

Правилният ред на колоните за съставния индекс зависи от заявката ви, но като основно правило колоната с най-малко различни стойности трябва да бъде първа.