Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Теоретичні відомості. Індекс – об'єкт бази даних, створюваний для підвищення продуктивності виконання запитів



Індекс – об'єкт бази даних, створюваний для підвищення продуктивності виконання запитів.

Таблиці в базі даних можуть мати велику кількість рядків, які зберігаються в довільному порядку, і їхній пошук за заданим значенням шляхом послідовного перегляду таблиці рядок за рядком (повне сканування таблиці) може займати багато часу.

При створенні індексу таблиці в нього заноситься інформація про розміщення даних того стовпця, по якому відбувається індексування. Коли в таблицю додаються записи, в індекс теж заносяться відповідні дані. При виконанні запиту, у якому в умові цього запиту є присутнім стовпець, по якому виконане індексування, спочатку відбувається пошук в індексі. Якщо підходяще значення в індексі буде знайдено, індекс поверне точне місце розташування потрібних даних у таблиці.

Прискорення роботи з використанням індексів досягається в першу чергу за рахунок того, що індекс має структуру, оптимізовану під пошук – наприклад, збалансованого дерева.

Створення або видалення індексів на самі дані не впливає. Видалення індексу може лише сповільнювати процес одержання даних. Для зберігання індексу потрібна фізична пам'ять і нерідко індекс розростається більше самої таблиці, для якої він був побудований.

Індекси можуть бути оголошені як унікальні і як неунікальні. Унікальний індекс реалізує обмеження цілісності на таблиці, виключаючи можливість вставки повторюваних значень.

Існує два типи індексів: кластерні й некластерні. У кожної таблиці може бути тільки один кластерний індекс і множина некластерних.

При наявності кластерного індексу рядки таблиці фізично зберігаються в заданому порядку й безпосередньо пов'язані з елементами індексу, завдяки чому значно прискорюється доступ до даних при виконанні запитів, що використають даний індекс. Якщо в таблиці немає кластерного індексу, таблиця є неупорядкованою.

Некластерный індекс, створений для такої таблиці, містить тільки покажчики на записі таблиці, у зв'язку із чим при вибірці необхідно принаймні ще одне звертання до диска для одержання властиво запису.

Деякі СКБД розширюють можливості індексів введенням можливості створення індексів по вираженнях.

Індекси фізично можуть бути реалізовані різними структурами. Найбільше часто употребимы B+ дерева й хеши.

Складений індекс – це індекс, складений за значеннями декількох стовпців таблиці. При створенні складеного індексу варто враховувати питання продуктивності бази даних, оскільки в цьому випадку порядок стовпців в умові індексу може сильно впливати на швидкість витягу даних.

Неявні індекси – це індекси, створювані автоматично сервером бази даних при створенні об'єктів. Наприклад, автоматично створюються індекси для ключів й обмежень типу унікальності.

Ще один тип індексу - двійковий масочний (bіtmap). В індексі цього типу двійкова маска формується на основі набору значень, припустимих для стовпця таблиці, з обліком їхніх дійсних значень, уже внесених у таблицю. Біт установлюється в 1, якщо відповідне значення з набору припустимих збігається зі значенням у даному рядку таблиці. У противному випадку біту привласнюється значення 0. Якщо набір припустимих значень у стовпці невеликий, то такий масочний індекс виявляється значно більше компактним й обробляється швидше, ніж традиційний деревоподібний індекс.

Основна проблема складається у виборі ідеального типу індексу (кластерний або некластерний?), числа стовпців, яке потрібно індексувати (чи потрібні індекси по декількох стовпцях?), і які стовпці повинні бути проіндексовані. Найкращою рекомендацією буде метод проб і помилок. Точно також, як перед використанням бази даних її потрібно протестувати, перш ніж використати індекси, необхідно їх протестувати. Під час такого тестування повинні бути випробувані різні комбінації індексів, робота без індексів, прості й складові індекси. Для ефективного використання індексів потрібне гарне розуміння структури й зв'язків бази даних і вимог запитів і транзакцій.

Для оптимальної продуктивності запитів індекси звичайно створюються на тих стовпцях таблиці, які часто використаються в запитах. Для однієї таблиці може бути створено кілька індексів. Однак збільшення числа індексів сповільнює операції додавання, відновлення, видалення рядків таблиці, оскільки при цьому доводиться обновляти самі індекси. Крім того індекси займають додатковий обсяг пам'яті, тому перед створенням індексу варто переконатися, що планований виграш у продуктивності запитів перевищить додаткову витрату ресурсів комп'ютера на супровід індексу.

Варто додавати індекси тільки тоді, коли є впевненість, що вони будуть використатися запитами до таблиці. Якщо невідомо, які запити будуть виконуватися стосовно таблиці, то не треба додавати ніяких індексів доти, поки не будуть відомі запити.

Рекомендується створювати індекси по стовпцях з великою кількістю унікальних значень у них, а також по стовпцях, які при використанні як фільтри в умові вибору рядків у запиті повертають невелику кількість рядків. Не слід використати індекси для невеликих таблиць.





Дата публикования: 2015-02-20; Прочитано: 940 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...