Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_lab_mod_5_kurs_2016.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
749.06 Кб
Скачать

Індекси

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

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

Індекси - це корисний інструмент, що широко застосовується у всіх сучасних СУБД. Коли створюється індекс у поле, БД запам'ятовує відповідний порядок Всіх значень цього полючи в області пам'яті. Про переваги індексів може говорити наступне: припустимо, що таблиця STUDENTS має кілька тисяч записів, і необхідно знайти студента з конкретним номером студентського квитка. Т.к. запису в таблиці не упорядковані, те СУБД буде змушена переглядати всю таблицю, рядок за рядком, перевіряючи щораз значення полючи SNUM на рівність шуканому значенню. При наявності індексу в поле SNUM, система могла б знайти шуканий номер прямо в цьому упорядкованому індексі, і дати інформацію про те, як знайти правильний рядок таблиці.

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

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

Синтаксис команди для створення індексу наступний:

CREATE INDEX <INDEX NAME> ON <TABLE NAME>

(<COLUMN NAME> [,<COLUMN NAME>]...);

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

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

CREATE INDEX SFAMIDX ON STUDENTS (SFAM);

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

Для створення унікальних (не утримуючих повторюваних значень) індексів використовують ключове слово UNIQUE у команді CREATE INDEX. Фактично такий індекс буде первинним ключем таблиці. Наприклад, для таблиці STUDENTS поле SNUM підходить у якості первинного ключа, і він стане першим кандидатом для унікального індексу. Створити його можна командою:

CREATE UNIQUE INDEX SNUMIDX ON STUDENTS (SNUM);

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

Оскільки основною ознакою індексу є його ім'я, то по його імені він може бути ідентифікований і вилучений. Звичайно користувачі не знають про існування індексу, а SQL автоматично визначає - чи дозволено користувачу використовувати індекс, і, якщо так, те дозволяє його вживання.

Однак, для видалення індексу, необхідно знати його ім'я. З обліком цього команда для видалення має наступний синтаксис:

DROP INDEX <INDEX NAME>;

Наприклад, для видалення створеного індексу на прізвище студента, можна скористатися наступною командою:

DROP INDEX SFAMIDX;

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

Порядок роботи:

  1. Створити базу даних відповідно до варіанту завдання (кількість таблиць не менше 3).

Варіанти завдання (тип бази даних) згідно номеру бригади:

  1. Бібліотека

  2. Автосалон

  3. Музичний магазин

  4. Чемпіонат країни по футболу

  5. Комп’ютерні магазини міста

  6. Склад оргтехніки.

  1. Перевірити створену базу даних на працездатність.

  2. Провести основні операції з базою даних

    1. добавлення запису;

    2. перегляд даних;

    3. видалення запису;

    4. сортування даних.

  1. Створити індекси в базі даних та повторити дії п.3 вже з проіндексованими таблицями, використовуючи записи одразу з декількох таблиць.

Контрольні питання

1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]