Как индексировать столбец Y / N в Oracle - PullRequest
1 голос
/ 08 января 2010

У меня есть большая таблица (6 м записей), содержащая данные, лицензированные у поставщика. Таблица содержит столбец NVARCHAR2 (1) со значениями Y / N. Я создал представление, чтобы отфильтровать записи со значением 'N', и это представление будет активно запрашиваться Каков наилучший способ индексирования столбца NVARCHAR2 (1)?

Ответы [ 4 ]

8 голосов
/ 08 января 2010

Какое соотношение Y / N? Обновляются ли записи, чтобы они шли с Y / N и / или N / Y? Если да, происходит ли это регулярно (например, в наличии / нет в наличии / в наличии / нет в наличии) или как единое целое (необработано / обработано)?

Если записи смешаны, и у вас есть коэффициент четности, индекс вряд ли поможет.

Вы можете использовать разбиение (если у вас есть лицензия), чтобы отделить Y от N. Материализованные представления или сделать таблицу представлением UNION ALL для двух таблиц (возможно, с помощью триггеров INSTEAD OF) также может разделить Y от N. Все это повлечет за собой штраф за обновление обработки.

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

У вас может быть индекс, основанный на функции, на CASE WHEN flag = 'Y', а затем 'Y' end. Это исключило бы N значений из индекса, сделав его намного меньше.

1 голос
/ 08 января 2010

Использовать растровый индекс.

http://www.dba -oracle.com / oracle_tips_bitmapped_indexes.htm

1 голос
/ 08 января 2010

Если таблица имеет большой перекос значений Y / N, вам, возможно, также понадобится рассмотреть Histograms:

http://www.dba -oracle.com / t_histograms.htm

http://download.oracle.com/docs/cd/B19306_01/server.102/b14211/stats.htm#i42219

0 голосов
/ 08 января 2010

Может быть, использовать материализованное представление? Тогда все ваши запросы будут обрабатываться для таблицы меньшего размера "Y".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...