индекс на базата данни - живот-прог

архитектура

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







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

Последователността на колони в композитен индекс

Последователността, в която колоните са представени в сгънато индекс достатъчно важно. Факт е, че за да получите набор от данни при поискване, засягащ само първата от индексирани колони, можете. Въпреки това, в повечето бази данни е невъзможно или неефективно събиране на данни за втората и т.н. Само индексирани колони (без ограничение до първата).

ефикасност

За най-добри показатели за характеризиране заявки обикновено се създават на колоните на таблицата, които често се използват в запитвания. За една таблица може да бъде създаден от множество индекси. Въпреки това, увеличаването на броя на индексите забавя добави, актуализиране, изтриване редове от таблицата, тъй като е необходимо да се актуализира се на индексите. В допълнение, индекси заемат допълнителна памет, така че преди създаването на индекса, което трябва да се уверите, че печалбата, която се планира в ефективността на заявките надхвърлят допълнителните разходи за компютърни ресурси в подкрепа на индекса.







ограничения

Индекси са полезни за много приложения, но се налагат своите ограниченията за употреба. Помислете за това SQL заявка. SELECT first_name ОТ КЪДЕ хора last_name = 'Франкенщайн ". За да изпълните тази молба, без база данни индекс е да се провери last_name поле във всеки ред (този механизъм е известен като "пълен търсене" или "пълна маса сканиране", може да се покаже по отношение на думата "NATURAL»). При използване на индекса на база данни, просто преминава през двоично дърво, докато намери запис на "Франкенщайн" .Such пасаж изисква много по-малко средства, отколкото изчерпателно търсене на масата.

Сега вземете тази заявка: SELECT EMAIL_ADDRESS от клиенти КЪДЕ EMAIL_ADDRESS като "% @ yahoo.com." Това искане трябва да открием всички клиенти, чиито електронна поща завършва с "@ yahoo.com», обаче, дори и ако колоната е EMAIL_ADDRESS индекс база данни ще продължи да се използва и изчерпателно търсене на масата. Това се дължи на факта, че индексите се основава на предположението, че думите / героите излизат от ляво на дясно. с помощта на заместващи символи в началото на моето търсене в базата данни премахва възможността за използване на двоично дърво за търсене. Този проблем може да бъде решен чрез създаване на допълнителен индекс по думите на заден ход (EMAIL_ADDRESS) и заявка гледания В този случай, този знак ще бъде в най-правилната позиция ( «moc.oohay%»), което не изключва използването на индекс на обратната изберете EMAIL_ADDRESS от клиенти, където се обърне (EMAIL_ADDRESS) като обратна ( "% @ yahoo.com"); (.: EMAIL_ADDRESS).