Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 11 Лекция 1 (16).doc
Скачиваний:
1
Добавлен:
13.11.2019
Размер:
120.32 Кб
Скачать

16.3. Оптимизация запросов к базе данных.

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

16.3.1. Оптимальная структура индекса.

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

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

16.3.2. Эффективность использования индекса.

Эффективность использования индекса при поиске информации в таблице БД сильно зависит от того, построен ли индекс по уникальным значениям и, если нет, насколько отличаются данные, по которым он построен.

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

SET STATISTIC INDEX ИмяИндекса

Среднее количество записей - показатель, который рассчитывается всякий раз при оптимизации запроса как количество страниц базы данных, занятых этой таблицей, деленное на максимальное число записей на странице. Уменьшение числа страниц, занятых базой данных, и уничтожение на них "дыр" ведут к уменьшению показателя среднего числа записей и, как следствие - к повышению показателя полезности индексов. Это еще один аргумент в пользу периодического сжатия базы данных путем создания резервной копии и восстановления из нее базы данных средствами InterBase.

Для участия в выполнении запроса выбираются индексы с максимальным показателем полезности. Такие индексы обеспечивают более быстрый поиск. Максимальным показателем полезности обладают уникальные индексы, т.е. индексы, построенные по определениям первичных и уникальных ключей.