14 мая 2011 г.

oracle: Выбор столбцов для индексирования

Существует ряд рекомендаций по выбору столбцов которые стоит индексировать:
  • Создавать индекс рекомендуется, если часто выбираются данные, составляющие примерно 15% от данных таблицы. Этот процент может значительно варьироваться в зависимости от относительной скорости просмотра таблицы и от степени кластеризации данных строки по отношению к ключу индекса. Чем быстрее просматривается таблица, тем ниже процент. Чем больше кластеризация данных строки, тем процент выше.
  • Для повышения производительности соединений нескольких таблиц индексируйте столбцы, которые используются в соединении.
    Заметка: Для первичных и уникальных ключей индексы создаются автоматически, но при желании можно создать индексы и для внешних ключей.
  • Для маленьких таблиц индексы не требуются. Если запрос занимает долгое время, то возможно количество данных в таблице значительно возросло.



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


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


Размер одного элемента индекса не может превышать примерно половины свободного пространства  (минус служебная часть) в блоке данных.