Выбор таблиц и столбцов при создании индексов


1. Основные правила выбора ТАБЛИЦ при индексировании

1. Целесообразно индексировать таблицы, из которых выбирается не более 5% строк (сразу).
2. Следует индексировать таблицы, не имеющие дублей в разделе where команды select.
3. Не целесообразно индексировать часто обновляемые таблицы.
4. Не целесообразно индексировать таблицы, занимающие не более 2х страниц (~500 записей).
Прим. это м.б. таблицы адресов, городов, районов.

2. Основные правила выбора СТОЛБЦОВ при создании индексов

1. Первичные внешние ключи (уникальные индексы с максимальной «полезностью»).
2. При использовании опций ссылочной целостности всегда нужен индекс на FK.
3. Столбцы, по которым часто производится сортировка и/или группирование данных.
Прим. города – по названию, люди – по годам рождений.
4. Столбцы, по которым часто производится поиск в разделе where оператора select.
5. Не следует создавать индексы для длинных описательных столбцов (> 1го слова).

Примечание.
FoxPro позволяет создавать такие индексы по N начальным символам.

3. Основные принципы при создании СОСТАВНЫХ индексов

(по нескольким полям одновременно).
1. Столбцы хороши, если по отдельности имеют мало уникальных значений, а вместе много.
2. Если все значения, выбираемые оператором select, принадлежат составному индексу, то значение выбирается непосредственно из индекса.
(Т.е. если столбцы Город и Фамилия кроме самой таблицы есть ещё и в индексе, то при запросе они будут получены из индекса, а не из таблицы.)
3. Следует создавать составные индексы, если в where есть объединение с помощью AND.

4. Не рекомендуется создавать индексы, включая составные, по столбцам, которые:
1. Редко используются для поиска, объединения и сортировки результатов запросов.
2. Содержат часто меняющиеся значения, что ведёт к частому обновлению индекса и понижению производительности.
3. Содержат небольшое количество уникальных значений (Таблица, где хранится М и Ж, студенты – преимущественно Москва, где-то там Реутов, людей много – значений мало).
4. по столбцам, к значениям которых в разделе where применена функция или выражения.
(sin значения поля искать нельзя – работать не будет.)

5. Следует всегда стремиться к уменьшению числа индексов, что сказывается на производительности.

Как правило, индексы создаются для ЗАПРОСОВ (чтобы считывать данные быстрее) и для поддержания ССЫЛОЧНОЙ ЦЕЛОСТНОСТИ (нужен FK). Один индекс может служить одновременно для обеих целей. Если индекс никогда не используется для запросов, то создавать его не следует, а СЦ обеспечить с помощью триггеров. Т.е. можно сделать, но считается дурным тоном, как через дорогу нехорошо переходить, но переходят же люди.

Битовые индексы

Реализованы пока только в Oracle, т.к. являются достаточно новыми. Специально предназначены для колонок с небольшим числом уникальных значений. Если М и Ж, то 2 значения, хранится маска на все записи, где М и где Ж. Рекомендуется использовать где уникальных значений не более 10. Они занимают в 80% меньше места и работают значительно быстрее. Их нельзя использовать для проверки ссылочной целостности.


Комментарии запрещены.




Статистика