Индекс помаже СКЛ Серверу да брзо преузме податке из редова. Индекси функционишу као садржај на почетку књига, омогућавајући вам да брзо потражите страницу на којој се тема налази. Без индекса, СКЛ Сервер мора да скенира све редове у табели да би пронашао запис.
Постоје два типа индекса у СКЛ Серверу: групирани и негруписани. Сазнајте која је разлика између кластеризованих и негруписаних индекса и зашто су важни.
Груписани индекс у СКЛ Серверу
У груписаном индексу, редови података се физички чувају на уређен начин на основу вредности кључа. Пошто индекс укључује табелу и може само да организује редове у једном редоследу, можете креирати само један кластеризовани индекс по табели.
Док индекси убрзавају преузимање редова у опсегу, ИНСЕРТ и УПДАТЕ искази може бити спор јер оптимизатор упита скенира индекс по реду док не пронађе циљни индекс.
Некластеризовани индекс у СКЛ Серверу
Индекс који није кластер садржи кључне вредности чији је унос показивач који се зове локатор реда. За кластеризоване табеле (табеле са груписаним индексом), показивач показује на кључ у груписаном индексу који заузврат показује на ред у табели. За редове без груписаног индекса, показивач показује директно на ред табеле.
Како направити кластеризовани индекс у СКЛ Серверу
Када креирате табелу са примарним кључем, СКЛ Сервер аутоматски креира кластеризовани индексни кључ на основу тог примарног кључа. Ако немате примарни кључ, можете извршити следећу наредбу да бисте креирали кластеризовани индексни кључ.
КРЕИРАЈ ЦЛУСТЕРЕД ИНДЕКС <индексиме>
НА СТОЛУ <табле_наме>(име_колоне)
У овој изјави наводите име индекса, име табеле у којој ћете је креирати и име колоне која ће се користити у индексу.
Ако додате примарни кључ у табелу која већ има кластеризовани индекс, СКЛ Сервер ће са њим креирати негруписани индекс.
Да бисте креирали кластеризовани индекс који не укључује колону примарног кључа, прво морате одбацити ограничење примарног кључа.
КОРИСТИНазив базе података
АЛТЕРСТО табле_наме
КАПЦОНСТРАИНТ пк_наме
ГО
Уклањање ограничења примарног кључа такође уклања кластеризовани индекс што вам омогућава да креирате прилагођени индекс.
Како да креирате некластеризовани индекс у СКЛ Серверу
Да бисте креирали негруписани индекс, користите следећу наредбу.
КРЕИРАЈИНДЕКС <индексиме>
НА СТОЛУ <табле_наме>(име_колоне)
Такође можете користити кључну реч НОНЦЛУСТЕРЕД овако:
КРЕИРАЈ [НЕКЛАСТЕРИРАН] ИНДЕКС <индексиме>
НА СТОЛУ <табле_наме>(име_колоне)
Ова изјава креира негруписани индекс у табели коју наведете и укључује колону коју наведете.
Ако желите, можете сортирати колоне у растућем (АСЦ) или опадајућем (ДЕСЦ) редоследу.
КРЕИРАЈ [НЕКЛАСТЕРИРАН] ИНДЕКС <индексиме>
НА СТОЛУ <табле_наме>(име_колоне АСЦ/ДЕСЦ)
Који индекс треба да изаберете?
И кластеровани и некластеризовани индекси побољшавају време упита. Ако је већина ваших упита операција СЕЛЕЦТ на неколико колона у табели, груписани индекси су бржи. Међутим, за операције ИНСЕРТ или УПДАТЕ, негруписани индекси су бржи јер оптимизатор упита може да лоцира колону директно из индекса.
Као што видите, ови индекси најбоље функционишу различите СКЛ упите. Већина СКЛ база података ће стога имати користи од најмање једног груписаног индекса и негруписаних индекса за колоне које се редовно ажурирају.
Важност индекса у СКЛ Серверу
Груписани и негруписани индекси доводе до већих перформанси упита. Када покренете упит, оптимизатор упита скенира индекс за локацију складишта реда и затим преузима информације са те локације. Ово је много брже од скенирања свих редова у табели.
Такође можете да користите индексе који нису групирани да бисте решили застоје у тражењу обележивача тако што ћете креирати негруписани индекс за колоне којима упити приступају.