- •4.1. Історія мови sql та огляд її можливостей
- •4.2. Засоби пошуку даних
- •4.2.1. Основні конструкції мови, призначені для вибирання даних
- •4.2.2. Вирази, умови та оператори
- •4.2.3. Вибирання з кількох таблиць
- •4.2.4. Використання агрегатних функцій
- •4.2.5. Фраза group by. Групування таблиці за рядками
- •4.2.6. Фраза having. Умова вибирання для груп рядків
- •4.2.7. Фраза order by. Впорядкування рядків
- •4.2.8. Порядок обчислення запитів
- •4.2.9. Підзапити
- •4.2.10. Використання предикатів any, all, exists та in
- •4.2.11. Використання теоретико-множинних операторів
- •4.2.12. Запити, в яких реалізується квантор загальності
- •4.2.13, Використання невизначених значень
- •4.3. Засоби маніпулювання даними
- •4.3.1. Додавання рядків до таблиці. Оператор insert
- •4.3.2. Оновлення даних. Оператор update
- •4.3.3. Видалення рядків таблиці. Оператор delete
- •4.4. Операції над схемою бази даних
- •4.4.1. Створення бази даних. Оператор create database
- •4.4.2. Створення таблиці. Оператор create table
- •4.5.2. Використання індексів
- •4.6. Транзакції
- •4.6.1. Початок і завершення транзакції
- •4.6.2. Скасування транзакції. Точки збереження
- •4.7. Тригери
- •4.8. Додаткові можливості
4.5.2. Використання індексів
Одним зі способів подання даних не в тому порядку, в якому вони зберігаються, є використання індексів. Вони забезпечують:
задоволення вимоги унікальності записів;
підтримку логічної упорядкованості даних відповідно до значень одного чи кількох полів;
оптимізацію виконання запитів.
З погляду користувача, індекс — це перелік стовпців таблиці, за значеннями яких записи логічно впорядковуються. З погляду СКБД, індекс - це механізм, що дає змогу значно підвищити швидкість доступу до записів за індексованими полями та забезпечує ефективну перевірку унікальності значень індексованих полів.
Визначення індексу
Базовий синтаксис оператора визначення індексу є таким:
CREATE INDEX <ім'я індексу>
ON <ім'я таблиці> (<поле 1> [,<поле 2>]...)
У багатьох СКБД оператор визначення індексу доповнюється іншими конструкціями.
Правила використання індексів
Використовуючи індекси, варто брати до уваги такі міркування.
У таблицях невеликих розмірів індекси майже не забезпечують підвищення продуктивності.
Продуктивність значно підвищується в тих випадках, коли стовпці містять переважно неповторювані дані чи багато NULL-значень.
Завдяки індексам оптимізується виконання запитів, що видають невелику кількість рядків (до 25 %).
Пам'ятайте, що індекси прискорюють пошук даних, однак сповільнюють процес їхнього оновлення, що стає особливо відчутним під час одночасного оновлення великої кількості рядків. У подібних випадках перед оновленням індекс потрібно видаляти, а після завершення даної операції - відновлювати.
Зберігання індексів потребує значних обсягів пам'яті. Якщо СКБД дає змогу керувати пам'яттю, слід відвести частину пам'яті під індекси.
Потрібно завжди індексувати поля, що використовуються для з'єднання таблиць. Це значно прискорює виконання запитів.
•♦■ Не слід індексувати поля, які регулярно оновлюються.
♦ Не бажано зберігати індекси разом із таблицями на одному фізичному при строї. Розподіл цих об'єктів між носіями інформації знижує навантаження на них та прискорює виконання запитів.
Складені індекси
SQL дає змогу створювати індекс за кількома полями. Наприклад, оператор
CREATE INDEX КАФЕДРА_ЗАВІДУВАЧ_НАЗВА ON КАФЕДРА(#ЗАВІДУВАЧ. Назва)
створює індекс у таблиці КАФЕДРА за полями #ЗАВІДУВАЧ і Назва.
У складених індексах слід спочатку зазначати поля, що використовуються найчастіше. Складені індекси потрібно застосовувати тоді, коли зазначені в них поля використовуються для опису умови вибирання даних.
Використання фрази UNIQUE
Фраза UNIQUE вказує, що значення індексу мають бути унікальними. Наприклад, оператор
CREATE UNIQUE INDEX ГРУПА_ІД ON ГРУПА(#G)
вимагає, щоб у таблиці ГРУПА значення поля #G були неповторюваними.
Порядок сортування полів у індексі
У деяких СКБД надається можливість зазначати порядок сортування полів, що індексуються. Наприклад, оператор
CREATE INDEX ФАКУЛЬТЕТ_НАЗВА_ДЕКАН ON ФАКУЛЬТЕТСНазва DESC. Декан)
вказує на необхідність індексування таблиці ФАКУЛЬТЕТ за стовпцем Назва у порядку спадання, а за стовпцем Декан - у порядку зростання. За замовчуванням сортування здійснюється в порядку зростання.
Видалення індексу
Видалення індексу виконується командою DROP INDEX, що має такий синтаксис:
DROP INDEX <ім'я індексу>
