Index (база данни)

В този план, има и други приложения, вижте. Index.

Някои бази данни разширяват възможностите на въвеждането на възможността за създаване на индекси на колони индекси представяния [1] или индекси на изразяване. [2] Например, индексът може да бъде създадена чрез експресия горната (last_name) и съответно магазин препратки към ключа за която стойността на поле е last_name главни букви. В допълнение, индексите могат да бъдат обявени за уникален и не-уникален. Той реализира уникален индекс ограничение на масата, с изключение на възможността за въвеждане на дублиращи се стойности.

Има два вида индекси: скупчени и не-скупчени. Ако има индекс клъстер маса на реда са подредени по стойност на клавиша индекс. Ако таблицата не клъстери индекс, масата се нарича куп [3]. Non-струпани индекс, създаден за таблица, която съдържа само указатели към записите в таблицата. Клъстер индекс може да бъде само един за всяка маса, но всяка таблица може да има няколко различни не-клъстерирани индекси, всеки от които определя собствената си заповед на записите.

Индекси могат да бъдат изпълнени в различни структури. Най-често upotrebimo B * дърво. А Б + дърво. В-дървета и хеш.

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

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

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

Индекси са полезни за много приложения, но се налагат своите ограниченията за употреба. Вземете следния SQL заявка:

SELECT first_name ОТ КЪДЕ хора last_name = "Франкенщайн"; ,

За да изпълните тази молба, без база данни индекс е да се провери last_name поле във всеки ред (този механизъм е известен като "пълен търсене" или "пълна маса сканиране" може да се покаже по отношение на думата ЕСТЕСТВЕНО). При използване на индекса на база данни, просто преминава през B-дървото, докато намери влизането "Франкенщайн". Този пасаж изисква много по-малко средства, отколкото изчерпателно търсене на масата.

Сега вземете тази заявка:

SELECT EMAIL_ADDRESS от клиенти КЪДЕ EMAIL_ADDRESS като "%@yahoo.com"; ,

Това искане трябва да открием всички клиенти, чиито електронна поща завършва с @ yahoo.com. Въпреки това, дори и ако колоната EMAIL_ADDRESS индекс, базата данни ще продължи да се използва и изчерпателно търсене на масата. Това се дължи на факта, че индексите се основава на предположението, че думите / героите излизат от ляво на дясно. Използването на заместващия знак в началото на моето търсене, за да се изключи възможността за използване на търсене на база данни за B-дърво. Този проблем може да бъде решен чрез създаване на допълнителен индекс експресия обратната (EMAIL_ADDRESS) и образуване на вида заявка:

SELECT EMAIL_ADDRESS от клиенти КЪДЕТО обратната (EMAIL_ADDRESS) СХОДЕН обратната ( "% @ yahoo.com '); ,

В този случай, заместващия знак ще се появи в най-дясната позиция (moc.oohay@%), което не изключва използването на индекс на обратната (EMAIL_ADDRESS).

Недостатъчно индекс (английски оскъдно индекс.) В базата данни - това е файл, с поредица от двойки ключове и указатели. [4] Всеки ключ в индекса за посветени, за разлика от плътен индекса. Тя е свързана с конкретен указател към блок в сортиран файла с данни. Идеята за използване на индекса дойде, защото модерните бази данни са твърде масивни, за да се поберат в основната памет. Ние обикновено се разделят на данни в блокове и поставете данните в блок памет от блок. Въпреки това, търсенето на записите в базата данни може да отнеме време. От друга страна, индексът на индексен файл или блок е много по-малък блок данни може да се побере в буфера на основната памет, което увеличава запис на скоростта търсене. Тъй като ключовете са подредени, можете да използвате двоично търсене. В скупчени индекси с дублиращи се ключове рядко индексни пункта до най-ниското ключа във всеки блок.