2009-06-11 2 views
3

Основываясь на своем опыте работы с Oracle, каков будет лучший тип и параметры индекса, которые вы зададите в столбце типа DATE?Какой тип индекса лучше всего подходит для типа DATE в Oracle?

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

Будет ли справедливым создание индекса кластера?

Меня интересует оптимизация выполнения запросов, таких как SELECT * FROM Log WHERE [Date]> '20 -06-2009 'ORDER BY [Date] DESC, не замедляя вставки в массовом порядке. (кстати. В реальном мире, я хотел бы использовать правильный синтаксис TO_DATE, чтобы избежать усечения и отсутствует индекс)

Приветствия,

ответ

5

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

Он также сделает индекс более крупным, потому что разделение блока индекса будет составлять 50/50 вместо 90/10, которое использует Oracle, когда он обнаруживает шаблон роста справа в индексированных значениях.

6

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

Учитывайте более сложные индексы, если у вас возникли проблемы с вышеуказанным.

С уважением K

1

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