Способи використання індексів

Фундаментальним перевагою будь-якого індексу в порівнянні з іншими шляхами доступу є те, що він прискорює пошук Але застосування індексів повязано також з певним недоліком – Вони сповільнюють операції оновлення Наприклад, після вставки кожного нового запису в індексований файл необхідно також вводити новий елемент в індекс У якості більш конкретного прикладу достатньо уявити собі, які дії СУБД повинні виконати над індексом CITY, показаним на рис Г9, якщо постачальник S2 переїжджає, скажімо, з Парижа до Лондона Тому, взагалі кажучи, розглядаючи можливість використання деякого поля як кандидата для індексації, необхідно перш за все знайти відповідь на таке запитання: Що важливіше, ефективна вибірка на основі значень розглянутого іоля або витрати оновлення, повязані із забезпеченням такої ефективної вибірки .

У решти цього розділу мова піде саме про операції вибірки

По суті, індекси можуть використовуватися двома різними способами По-перше, з їх допомогою може здійснюватися послідовний доступ до індексувати файли (тут під терміном послідовний мається на увазі в послідовності, обумовленою значеннями індексованого поля) Наприклад, індекс CITY, показаний на рис Г9, дозволяє звертатися до записів файлу постачальників в алфавітній послідовності назв міст По-друге, індекси можуть використовуватися для прямого доступу до окремих записів в індексувати файли з урахуванням конкретного значення індексованого поля Цей другий випадок можна проілюструвати на прикладі запиту: Визначити постачальників з Лондона, який розглядався на початку даного розділу

Дві тільки що висловлені основні ідеї фактично можуть бути трохи узагальнені, як описано нижче

■&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Послідовний доступ Індекс дозволяє також спростити виконання запитів з застосуван ням діапазону значень, наприклад: Визначити постачальників з міст, назви яких починаються з літер, що належать до зазначеного діапазону в алфавітному порядку (Припустимо, починаються з однієї з букв в діапазоні L-R) При цьому слід враховувати також два важливих приватних випадку: а) Визначити всіх постачальників з міст, назви яких в алфавітному порядку передують деякого вказаною значенням (або слідують за цим значенням) , і б) Визначити всіх постачальників з міста, назва якого знаходиться на перший (або на останньому місці) в алфавітному порядку .

■&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp Прямий доступ Індекс дозволяє також спростити виконання запитів із застосуванням списку,

наприклад: Визначити постачальників з міст, назви яких вказані в деякому

‘Заданому списку (Припустимо, Лондон, Париж та Нью-Йорк)

Крім того, є деякі запити, наприклад, з перевіркою наявності даних (на які можна отримати відповідь виключно з індексу, взагалі без будь-якого звернення до індексувати файли Припустимо, що потрібно знайти відповідь на запит: Чи є будь постачальники в Афінах”. Відповідь на цей запит, безумовно, буде позитивним тоді і тільки тоді, коли в індексі CITY є елемент, що відноситься до Афін Аналогічні зауваження відносяться і до запитів, в яких використовуються певні агрегує оператори Як приклад можна вказати запит: Визначити перше місто в алфавітному порядку, де є постачальники ; в даному випадку може застосовуватися агрегує оператор MIN (нагадаємо, що така можливість розглядалася в розділі 18)

Кожен конкретний файл може мати будь-яку кількість індексів Наприклад, для файлу постачальників можна задати і індекс CITY, і індекс STATUS (рис Г 10) Після цього зазначені індекси можуть використовуватися для забезпечення ефективного доступу до записів постачальників на основі заданих значень чи CITY, або STATUS, або обох значень В якості ілюстрації такого випадку, в якому застосовуються обидва значення, розглянемо запит: Визначити постачальників з Парижа зі статусом 30. Індекс CITY дозволяє визначити ідентифікатори записів (скажімо, г2 і ГЗ) для постачальників з Парижа аналогічним чином, індекс STATUS вказує на ідентифікатори записів (скажімо, ГЗ і г5) для постачальників зі статусом 30 Порівняння цих двох множин ідентифікаторів записів явно показує, що єдиним постачальником, який відповідає первісному запитом, є постачальник з ідентифікатором запису, рівним ГЗ (а саме постачальник S3) У самій СУБД доступ до файлу постачальників можна виконати тільки після перевірки індексів, щоб відразу ж отримати бажану запис

рис Г10 Індексація файлу постачальників по двох полях, CITY і STATUS

Додаткова термінологія Індекси іноді називають інвертованими списками (Inverted list) з наступної причини Насамперед, звичайний файл (у цьому сенсі як типовий приклад звичайного файлу може розглядатися файл постачальників, показаний на рис Г9 і Г10), взагалі кажучи, містить для кожного запису список значень полів цього запису На відміну від цього, індекс для кожного значення індексованого поля містить список записів, що мають це значення (Системи

баз даних з інвертованими списками, які були коротко згадані в розділі 16 глави 1, отримали свою назву від зазначеного терміну) Наведемо ще один важливий термін – файл, у якому індекс мається на кожному полі, іноді називають повністю інвертованим (fully inverted)

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*