Індекс таблиці бази данихІндекс (англ. index) — об'єкт бази даних, що створений з метою підвищення ефективності виконання запитів. Таблиці в базі даних можуть мати велику кількість рядків, які зберігаються у довільному порядку, і їх пошук за заданим значенням шляхом послідовного перегляду таблиці рядок за рядком може займати багато часу. Індекс формується зі значень одного чи кількох стовпчиків таблиці і вказівників на відповідні рядки таблиці і, таким чином, дозволяє знаходити потрібний рядок за заданим значенням. Прискорення роботи з використанням індексів досягається в першу чергу за рахунок того, що індекс має структуру, що оптимізована для пошуку — наприклад, збалансованого дерева. Деякі СКБД розширюють можливості індексів введенням можливості створення індексів за виразами. Наприклад, індекс може бути створений за виразом АрхітектураІснує два типи індексів: кластерні та некластерні. У кожної таблиці може бути тільки один кластерний індекс і багато некластерних. При присутності кластерного індексу рядки таблиці фізично зберігаються в заданому порядку і напряму зв'язані з елементами індексу, завдяки чому значно прискорюється доступ до даних при виконанні запитів, що використовують даний індекс. Якщо в таблиці немає кластерного індексу, таблиця є невпорядкованою. Некластерний індекс, створений для такої таблиці, містить лише вказівник на записи таблиці, в зв'язку з чим при вибірці необхідно принаймні ще одне звертання до диску для отримання саме запису таблиці. Індекси фізично можуть бути реалізовані різними структурами. Найчастіше вживані B+ дерева і хеш-таблиці. Послідовність стовпців в складеному індексіПослідовність, в якій представлені стовпці в складеному індексі, досить важлива. Справа в тому, що отримати набір даних за запитом, що зачіпає лише перший з проіндексованих стовпців, можна. Однак у більшості СКБД неможливе або неефективне отримання даних тільки за другим і так далі проіндексованим стовпцям (без обмежень на перший). Наприклад, уявімо собі телефонний довідник, відсортований спочатку за містом, потім за прізвищем, і потім за іменем. Якщо ви знаєте місто, тоді ви легко можете знайти всі телефони цього міста. Однак у такому довіднику буде складно знайти всі телефони, записані на певне прізвище — для цього необхідно подивитися в секцію кожного міста і пошукати там потрібну інформацію. Деякі СКБД виконують цю роботу, інші ж просто не використовують такий індекс. ЕфективністьДля оптимальної ефективності запитів індекси зазвичай створюються на тих стовпцях таблиці, які часто використовуються в запитах. Для однієї таблиці можуть бути створені кілька індексів. Однак збільшення числа індексів уповільнює операції додавання, оновлення, видалення рядків таблиці, оскільки при цьому необхідно оновлювати самі індекси. Крім цього індекси займають додатковий обсяг пам'яті, тому перед створенням індексу потрібно впевнитися, що виграш, який планується в ефективності запитів переважить додаткові витрати ресурсів комп'ютера на супроводження індексу. ОбмеженняІндекси корисні для багатьох програм, однак на їхнє використання накладаються обмеження. Візьмемо такий запит SQL: Тепер візьмемо такий запит:
|
Portal di Ensiklopedia Dunia