Индексирование. Работа с индексами.
Ключ
Индекс
Индекс
Столбцы индекса
Столбцы индекса
Типы индекса
Уникальный индекс
Индекс первичного ключа
Полнотекстовый индекс
Кластерный индекс
Последовательность столбцов в составном индексе
Особенности работы с индексами в MS Access
452.00K
Category: databasedatabase

Лекция 17 (1)

1. Индексирование. Работа с индексами.

Лекция 17

2. Ключ

Ввиду того, что отношение не содержит двух одинаковых
кортежей, в каждом отношении существует совокупности
атрибутов, значения которых однозначно идентифицируют
кортеж отношения.
Атрибуты, значения которых однозначно идентифицируют
кортежи, называются ключевыми (ключом).

3. Индекс

В реляционных таблицах отсутствует требования
упорядоченности кортежей, с целью быстрого поиска нужных
значений данных вводят индексирование тех полей таблицы, по
которым возникает необходимость осуществлять поиск данных.
Индекс используется для быстрого доступа к определенному
содержимому таблицы базы данных.
Индекс - структура, в которой упорядочены значения одного или
нескольких столбцов таблицы базы данных.
Например, столбец фамилии в таблице Служащие.
Если искать какого-либо сотрудника по его фамилии,
использование индекса позволит получить нужную информацию
быстрее, чем при поиске с просмотром всех строк таблицы.

4. Индекс

Индекс содержит указатели на значения данных, хранящиеся в
заданных столбцах таблицы, и упорядочивает эти указатели согласно
заданному порядку сортировки.
Индекс используется в базе данных, как предметный указатель в книге:
база данных ищет в индексе конкретное значение и использует
найденный указатель для перехода к строке, содержащей это значение.
Как правило, индекс создается для таблицы только в том случае, если
данные в индексированных столбцах будут часто запрашиваться.
Индексы требуют дополнительного места на диске и могут замедлить
добавление, удаление и обновление строк. В большинстве случаев
преимущества индексов, связанные с ускорением извлечения данных,
значительно перевешивают эти недостатки. Однако если данные
обновляются в приложении очень часто, или если место на диске
ограничено, имеет смысл уменьшить число индексов.

5.

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

6.

Пример:
На рисунке показан фрагмент таблицы КЛИЕНТЫ, содержащей
информацию о покупателях, и индекс IDX_NAME, построенный на
основе поля Name таблицы КЛИЕНТЫ.
Индекс IDX_NAME содержит значения ключевого поля Name,
упорядоченные в алфавитном порядке, и ссылки на
соответствующие записи в таблице КЛИЕНТЫ.
Сергеева
Родионов

7.

Каждая таблица может иметь несколько различных индексов,
каждый из которых определяет свой собственный порядок
следования записей.
Например, таблица АВТОРЫ может иметь индексы для
представления данных об авторах, упорядоченные по дате
рождения или по алфавиту.
Каждый индекс используется для представления одних и тех
же данных, но упорядоченных различным образом.
Вообще говоря, таблицы в базе данных могут и не иметь индексов.
В этом случае для большой таблицы время поиска определенной
записи может быть весьма значительным и использование индекса
становиться необходимым. С другой стороны, не следует
увлекаться созданием слишком большого количества индексов, так
как это может заметно увеличить время необходимое для
обновления базы данных и значительно увеличить размер файла
базы данных.

8. Столбцы индекса

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

9. Столбцы индекса

Чтобы оценить степень целесообразности индекса:
• Изучите предложения WHERE и JOIN, используемые в запросах.
Каждый столбец, включенный в одно из этих предложений, является
потенциальным кандидатом на включение в индекс.
• Поэкспериментируйте с новым индексом и проанализируйте, как его
использование отражается на скорости выполнения запросов.
• Проверьте, сколько индексов уже создано для данной таблицы.
Рекомендуется избегать чрезмерного числа индексов в одной таблице.
• Просмотрите определения индексов, уже созданных для таблицы.
Старайтесь не создавать перекрывающиеся индексы, содержащие
общие столбцы.
• Проверьте число уникальных значений данных в столбце и сравните
его с числом строк в таблице. Полученный результат называется
селективностью столбца; он позволяет определить, является ли
столбец кандидатом на включение в индекс, и если да, то в индекс
какого типа.

10. Типы индекса

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

11. Уникальный индекс

Уникальным является индекс, в котором не может быть двух
строк с одним и тем же значением индекса.
В большинстве баз данных не допускается сохранение таблицы с
созданным в ней уникальным индексом, если в существующих
данных имеются повторяющиеся значения ключа.
В базе данных может быть также запрещено добавление новых
данных, приводящее к появлению дубликатов значений ключа в
таблице.
Например, если создать уникальный индекс по фамилии
сотрудника (Fname) в таблице СОТРУДНИКИ, в ней не должно
быть двух сотрудников с одинаковыми фамилиями.

12. Индекс первичного ключа

В таблице базы данных обычно имеется столбец или комбинация
столбцов, значения которых однозначно идентифицируют
каждую строку таблицы. Такой столбец называется первичным
ключом таблицы.
Определение первичного ключа для таблицы в схеме базы
данных автоматически приводит к созданию индекса первичного
ключа, который является разновидностью уникального индекса.
Этот индекс требует уникальности каждого значения первичного
ключа. Он также обеспечивает быстрый доступ к данным при
использовании индекса первичного ключа в запросах.

13. Полнотекстовый индекс

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

14. Кластерный индекс

В кластерном индексе физический порядок строк в таблице
совпадает с логическим (индексированным) порядком значений
ключа.
У таблицы может быть только один кластерный индекс.
Если индекс не кластеризован, физический порядок строк
таблицы отличается от логического порядка значений ключа.
Кластерный индекс обычно обеспечивает более быстрый доступ
к данным, чем прочие индексы.

15. Последовательность столбцов в составном индексе

Получить набор данных по запросу, затрагивающему только
первый из проиндексированных столбцов, можно. Однако в
большинстве СУБД невозможно или неэффективно получение
данных только по второму и далее проиндексированным
столбцам (без ограничений на первый столбец).
Например, представим себе телефонный справочник,
отсортированный вначале по городу, затем по фамилии, и затем
по имени. Если вы знаете город, вы можете легко найти все
телефоны этого города. Однако в таком справочнике будет
весьма трудоёмко найти все телефоны, записанные на
определённую фамилию — для этого необходимо посмотреть в
секцию каждого города и поискать там нужную фамилию.

16. Особенности работы с индексами в MS Access

В Microsoft Access возможностей работы с индексами намного
меньше.
Автоматически создаются индексы для полей, на которые
назначены ограничение первичного или вторичного ключа.
Для остальных столбцов индексы можно
создать в режиме конструктора для таблицы
Для этого поля предусмотрено три варианта:
• Нет (по умолчанию),
• Да (допускаются совпадения)
• Нет (Совпадения не допускаются).
English     Русский Rules