Індекси (візуальні інструменти для баз даних)

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

У схемах баз даних можна створювати, змінювати і видаляти індекси будь-якого типу в діалогових вікнах У діалоговому вікні "Індекси / Ключі". У діалоговому вікні "XML-індекси" і діалогове вікно "Повнотекстовий індекс" для обраної таблиці. Індекс зберігається в базі даних при збереженні таблиці, з якою він пов'язаний, або при збереженні схеми, в яку входить таблиця. Додаткові відомості див. У розділі Робота з індексами.

Індекси можуть використовуватися в базах даних по-різному. Додаткові відомості про це див. У документації по використовуваної базі даних.

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

Перш ніж створювати індекс, визначте, які стовпці повинні використовуватися і якого типу індекс потрібно.

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

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

Щоб оцінити ступінь доцільності індексу:

Вивчіть пропозиції WHERE і JOIN, використовувані в запитах. Кожен стовпець, включений в одне з цих пропозицій, є потенційним кандидатом на включення в індекс.

Експериментуйте з новим індексом і проаналізуйте, як його використання відбивається на швидкості виконання запитів.

Перевірте, скільки індексів вже створено для даної таблиці. Рекомендується уникати надмірного числа індексів в одній таблиці.

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

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

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

унікальний індекс

Унікальним є індекс, в якому не може бути двох рядків з одним і тим же значенням індексу.

У більшості баз даних не допускається збереження таблиці зі створеним в ній унікальним індексом, якщо в існуючих даних є повторювані значення ключа. У базі даних може бути також заборонено додавання нових даних, що приводить до появи дублікатів значень ключа в таблиці. Наприклад, якщо створити унікальний індекс на прізвище співробітника (lname) в таблиці employee. в ній не повинно бути двох співробітників з однаковими прізвищами.

Індекс первинного ключа

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

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

кластерний індекс

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

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

Додаткові відомості про використання кластерного індексу см. В розділі Практичний посібник. Створення кластеризованих індексів.

повнотекстовий індекс

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

Перед створенням повнотекстового індексу необхідно спочатку створити каталог за допомогою будь-якого зовнішнього кошти, такого як SQL Server Management Studio або Enterprise Manager.