- Индексирање се користи за оптимизацију перформанси базе података минимизирањем броја потребних приступа диску када се упит обрађује.
- Индекс је врста структуре података. Користи се за брзо лоцирање и приступ подацима у табели базе података.
Структура индекса:
Индекси се могу креирати помоћу неких колона базе података.
- Прва колона базе података је кључ за претрагу који садржи копију примарног кључа или кључа кандидата за табелу. Вредности примарног кључа се чувају у сортираном редоследу тако да се одговарајућим подацима може лако приступити.
- Друга колона базе података је референца података. Садржи скуп показивача који држе адресу блока диска где се може пронаћи вредност одређеног кључа.
Методе индексирања
Уређени индекси
Индекси се обично сортирају да би претраживање било брже. Индекси који су сортирани су познати као уређени индекси.
Пример : Претпоставимо да имамо табелу запослених са хиљадама записа и сваки од њих има 10 бајтова. Ако њихове личне карте почињу са 1, 2, 3.... и тако даље и морамо да тражимо ученика са ИД-543.
- У случају базе података без индекса, морамо претраживати блок диска од почетка до 543. ДБМС ће прочитати запис након читања 543*10=5430 бајтова.
- У случају индекса, ми ћемо претраживати помоћу индекса и ДБМС ће прочитати запис након читања 542*2= 1084 бајта што је много мање у поређењу са претходним случајем.
Примари Индек
- Ако је индекс креиран на основу примарног кључа табеле, онда је познат као примарно индексирање. Ови примарни кључеви су јединствени за сваки запис и садрже однос 1:1 између записа.
- Како се примарни кључеви чувају у сортираном редоследу, извођење операције претраживања је прилично ефикасно.
- Примарни индекс се може класификовати у два типа: густи индекс и ретки индекс.
Густи индекс
- Густи индекс садржи индексни запис за сваку вредност кључа за претрагу у датотеци података. То чини претрагу бржим.
- У овом случају, број записа у индексној табели је исти као и број записа у главној табели.
- Потребно му је више простора за складиштење самог индексног записа. Индексни записи имају кључ за претрагу и показивач на стварни запис на диску.
Ретки индекс
- У датотеци са подацима индексни запис се појављује само за неколико ставки. Свака ставка указује на блок.
- У овом случају, уместо да показује на сваки запис у главној табели, индекс показује на записе у главној табели у празнини.
Индекс груписања
- Груписани индекс се може дефинисати као поређана датотека са подацима. Понекад се индекс креира на колонама које нису примарног кључа које можда нису јединствене за сваки запис.
- У овом случају, да бисмо брже идентификовали запис, груписаћемо две или више колона да бисмо добили јединствену вредност и креирали индекс од њих. Овај метод се зове индекс груписања.
- Записи који имају сличне карактеристике се групишу и за те групе се креирају индекси.
Пример : претпоставимо да компанија има неколико запослених у сваком одељењу. Претпоставимо да користимо индекс кластерирања, где се сви запослени који припадају истом Депт_ИД-у сматрају унутар једног кластера, а показивачи индекса указују на кластер као целину. Овде Депт_Ид је не-јединствени кључ.
алгоритам штанда
Претходна шема је мало збуњујућа јер један блок диска деле записи који припадају другом кластеру. Ако користимо одвојени блок диска за одвојене кластере, онда се то назива бољом техником.
Секундарни индекс
У оскудном индексирању, како величина табеле расте, расте и величина мапирања. Ова пресликавања се обично чувају у примарној меморији тако да би преузимање адресе требало да буде брже. Затим секундарна меморија претражује стварне податке на основу адресе добијене од мапирања. Ако величина мапирања расте, дохваћање саме адресе постаје спорије. У овом случају, ретки индекс неће бити ефикасан. Да би се превазишао овај проблем, уводи се секундарно индексирање.
У секундарном индексирању, да би се смањила величина мапирања, уводи се други ниво индексирања. У овој методи, велики опсег за колоне је првобитно одабран тако да величина мапирања првог нивоа постаје мала. Затим се сваки опсег даље дели на мање опсеге. Мапирање првог нивоа се чува у примарној меморији, тако да је преузимање адресе брже. Мапирање другог нивоа и стварни подаци се чувају у секундарној меморији (хард диску).
јава стринг трим
На пример:
- Ако желите да пронађете запис бацања 111 на дијаграму, онда ће претражити највиши унос који је мањи или једнак 111 у индексу првог нивоа. Добиће 100 на овом нивоу.
- Затим на другом нивоу индекса, опет ради максимум (111)<= 111 and gets 110. now using the address 110, it goes to data block starts searching each record till 111. < li>
- Овако се врши претрага у овој методи. Уметање, ажурирање или брисање се такође врши на исти начин. =>