Учебное пособие / Lab5
.docЛАБОРАТОРНА РОБОТА №5
ТЕМА РОБОТИ: Використання індексів і ключів.
МЕТА РОБОТИ: Навчити студентів оптимізувати процес обробки запитів шляхом створення індексів і ключів.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Визначення індексів
Індекси – це внутрішній метод SQL Server організації даних з таблиць, завдяки якому їхня вибірка виконується оптимальним образом. Індекси – це набори унікальних значень деякої таблиці й відповідні їм показчики на сторінки таблиці, де фізично перебувають ці значення. Образно говорячи, індекси – це стенографічний спосіб запису інформації, що зберігається в таблицях. У той же час, індекси – це ще один вид об’єкта бази даних, для створення якого потрібна додаткова пам’ять, точно так само, як і для таблиць. Створюючи індекс в SQL Server, ви тим самим даєте йому команду сканувати таблицю, вибрати унікальні значення в конкретному стовпці, а потім записати на індексну сторінку покажчики на сторінки даних й ідентифікатори рядків для індексуючих значень. Тоді в пошуку необхідних даних сервер буде сканувати не всю таблицю, а тільки індексні сторінки.
Принципи створення індексів
Робота з індексами означає безперервне тестування бази даних. Це як завдання з багатьма невідомими, котре вирішується методом підбора параметрів. Наприклад, якщо передбачається, що створювані індекси будуть використати механізм забірки даних додатки типу клієнт/сервер, то при такому підході до збору інформації з таблиць головним фактором є те, які стовпи будуть проіндексовані.
Створення індексу за допомогою SQL Server Enterprise Manager
Щоб створити індекс за допомогою програми SQL Server Enterprise Manager, виконайте наступні дії:
-
Запустіть додаток SQL Server Enterprise Manager із групи програм Microsoft Server Enterprise.
-
Виберіть сервер, базу даних і таблицю, з якими ви збираєтесь працювати.
-
Виберіть команду меню Action – All Tasks – Manage Indexes. На екрані з’явиться діалогове вікно Manage Indexes.
-
Клацніть на кнопці New (Створити), щоб викликати діалогове вікно Create New Index (Створення нового індексу), у якому можна ввести ім’я нового індексу й вибрати для нього стовпці.
-
Уведіть у поле Index Name (Ім’я індексу) ім’я fk_au_id, виберете стовпець au_id й установите прапорці Unique Values (Унікальні значення) і Ignore Duplicate Values (Ігнорувати повторювані значення).
Створення індексу за допомогою команди Create Index
При створенні індексу за допомогою програми SQL Server Enterprise Manager використовюється команда Transact-SQL Create Index. Синтаксис цієї команди такий:
CREATE [UNIQUE] [CLUSTERED / NONCLUSTERED ]
INDEX index name ON table_name (column_name [, … n])
[WITH
[PAD_INDEX ]
[ [,] FILLFACTOR = fillfactor ]
[ [,] IGNORE_DUP_KEY ]
[ [,] SORTED_DATAREORG ]
[ [,] {IGNORE_DUP_ROW / ALLOW_DUP_ROW}]
[ [,] DROP_EXISTING ]
[ [,] STATISTISTICS_NORECOMPUTE ]
[ ON filegroup ]
Відображення інформації про індекс
В SQL Server існує два способи відображення інформації про індекси: графічний (за допомогою диспетчера індексів Index Manager додатка SQL Server Enterprise Manager) і текстовий ( за допомогою системної збереженої процедури sp_helpindex і збереженої процедури ODBC sp_statistics).
Видалення індексу за допомогою команди DROP INDEX
Щоб видалити індекс за допомогою команди Transact-SQL, можна скористатися оператором Drop Index. Його синтаксис:
DROP INDEX [owner.] table_name. Index_name
[, [owner.] table_name. Index_name…]
Параметри команди Transact-SQL DROP INDEX
Table_name – це ім’я таблиці в якій перебуває індекс. Якщо користувач, що запускає команду DROP INDEX – власник бази даних або системний адміністратор, що не є власником даної таблиці, то перед параметром table_name потрібно вказати власника таблиці, тобто визначити параметр owner.
Index_name – це ім’я індексу, що видаляють. За допомогою одного оператора можна видалити кілька індексів, перелічивши їх через кому.
Приведемо приклад видалення індексу Barny з таблиці Authors:
DROP INDEX author.barny
Визначення ключів
У термінології баз даних ключі й індекси це найчастіше синоніми, але в SQL Server між ними є деяка різниця.
Первиний ключ – це унікальний стовпець (або набор стовпців), що визначає рядки таблиці бази даних. У цьому змісті первиний ключ виконує ту ж функцію, щой унікальний індекс.
Зовнішні ключі – це стовпці таблиці, які відповідають первиним ключам інших таблиць. Співвідношення між первинним і зовнішнім ключами визначає область припустимих значень зовнішнього ключа.
Додавання первиних і зовнішніх ключів за допомогою оператора CREATE TABLE… PRIMARY KEY
У синтаксисі команди CREATE TABLE передбачена можливість додавання в розділі CONSTRAIN елемента PRIMARY KEY або FOREIGN KEY. Спрощений синтаксис команди CREATE TABLE виглядає в такий спосіб:
CREATE TABLE table_name
(column_name data_type CONSTRAINT … , …)
Додавання первиних і зовнішніх ключів за допомогою оператора ALTER TABLE … ADD CONSTRAINT
Для операторів ALTER TABLE … ADD CONSTRAINT і CREATE TABLE використовується аналогічний синтаксис.
ALTER TABLE table_d ADD CONSTRAINT pk_column_b PRIMARY KEY (column_b)
ПОРЯДОК ПРОВЕДЕННЯ ЛАБОРАТОРНОЇ РОБОТИ
-
Вивчити теоретичні відомості
-
Створити індекс за допомогою SQL Server Enterprise Manager.
-
Створити індекс за допомогою команди Create Index. Пояснити призначення всіх параметрів, коефіцієнтів й опцій.
-
Використати зазначений індекс за допомогою команди Select …
-
Відобразити інформацію про індекс різними процедурами.
-
Видалити індекс за допомогою команди Drop Index й у менеджері.
-
Додати первинні й зовнішні ключі за допомогою оператора Create Table… Primary Key і за допомогою менеджера.
-
Додати первинні й зовнішні ключі за допомогою оператора Alter Table …Add Constraint.
-
Відобразити інформацію про ключі.
-
Предоставити письмовий звіт по роботі.
ПИТАННЯ ДЛЯ САМОПЕРЕВІРКИ
-
Дайте визначення терміну “індекси”.
-
Що означає - “створити індекс”?
-
Яких принципів слід дотримувати при створенні індексів?
-
Які дії необхідно виконати щоб створити індекс?
-
Яка команда використовується для створення індексу? Наведіть приклад використання цієї команди.
-
Які способи існують відображення інформації про індекси?
-
Наведіть приклад виделення індексу.
-
Порівняйте терміни “ключі” та “індекси”. Яка між ними різниця?
-
Дайте визначення термінів “первиний ключ” та “зовнішні ключі”.
-
Які оператори використовуються для додавання ключів. Наведить приклади.