Добавил:
Меня зовут Катунин Виктор, на данный момент являюсь абитуриентом в СГЭУ, пытаюсь рассортировать все файлы СГЭУ, преобразовать, улучшить и добавить что-то от себя Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный_практикум_по_АБД_sqlserver.docx
Скачиваний:
4
Добавлен:
03.08.2023
Размер:
496.52 Кб
Скачать

7. Проверка полезности индексов

7.1. Создайте четыре некластерные в таблице Charge базы данных Credit в соответствии с табл. 6.

Таблица 6

Имя индекса

Имя поля

charge_no_CL

charge_no

indx_member_no

member_no

indx_provider_no

provider_no

indx_category_no

category_no

7.2. Сделайте запросы к таблице Charge, чтобы получить максимальные и минимальные значения полей Charge_no, Member_number, Provider_no, category_no. Запишите полученные значения в отчет в виде табл.7.

Таблица 7

Значение

Charge_no

Member_no

Provider_no

Category_no

Минимальное

Максимальное

7.3. Оцените селективность по каждому из индексируемых полей.

Для этого запишите следующие запросы, но не выполняйте их!

  1. SELECT * FROM charge

WHERE charge_no BETWEEN 1 AND m, где m-соответствующее максимальное значение

  1. SELECT * FROM charge

WHERE member_no BETWEEN 1 AND m

  1. SELECT * FROM charge

WHERE provider_no BETWEEN 1 AND m

  1. SELECT * FROM charge

WHERE category_no between 1 AND m.

Выделите первый запрос, и щелкните в меню Query по команде Display Estimated Plan.

В окне результатов вы получите план выполнения запроса, в котором будет указано, что запрос будет выполнен с помощью сканирования таблиц.

Изменяя верхнюю границу в предложении BETWEEN, подберите такое ее максимальное значение, при котором оптимизатор запросов начнет использовать индексы. Результат зафиксируйте в табл.8. И так проделайте с каждым запросом.

Таблица 8

Предложение WHERE

Граница, при которой используются индексы

% записей (n/10000)

WHERE charge_no BETWEEN 1 AND n

WHERE member_no BETWEEN 1 AND n

WHERE provider_no BETWEEN 1 AND n

WHERE category_no between 1 AND n

На основании полученных данных сделайте выводы, по какому ключу имеется наибольшая селективность.

8. Просмотр статистики индексов и оценка индексной селективности

Откройте базу данных Credit, удалите указанные в команде DROP индексы таблицы member и выполните следующие команды для создания индексов.

DROP INDEX member.indx_member_no, member.indx_corp_lname, member.indx_lastname

CREATE UNIQUE INDEX indx_member_no ON member (member_no)

CREATE INDEX indx_corp_lname ON member (corp_no,lastname)

CREATE INDEX indx_lastname ON member (lastname)

GO

Для просмотра статистики индекса indx_member_no выполните следующую команду:

DBCC SHOW_STATISTICS (member,indx_member_no)

Запишите результаты в табл.9.

Таблица 9

Информация

Результат

indx_member_no

indx_corp_lname

indx_lastname

Rows

Steps

Density

All density

Аналогичные действия проделайте и с другими созданными индексами.

Оцените селективность каждого индекса по полученным результатам.