Распределение данных Oracle по индексу даты - PullRequest
1 голос
/ 23 сентября 2011

В больших таблицах базы данных (~ 50 миллионов строк) возникает ситуация, когда пользователям необходимо просматривать записи, проиндексированные по дате.

Но пользователи, просматривающие данные, не обязательно знают, где на временной шкале происходят данные и где имеются пробелы. В прошлых проектах я квантовал записи в 24-часовые «сегменты» и использовал их для создания временной шкалы гистограммы, где высота столбца указывает количество записей за этот период. Это позволило пользователям сосредоточиться на тех областях, где данные действительно существуют.

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

Есть ли более элегантное решение для получения этих совокупных количеств записей? Например, посмотрев на индекс даты и увидев, сколько значений там связано с этим индексом?

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

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

1 голос
/ 23 сентября 2011

Не уверен, что вы спрашиваете, но столкнувшись с подобной ситуацией, я бы сделал следующее:

Разбить таблицу на s_date. (это то, что ваше "ведро", раздел?)

Создание индекса растрового изображения для s_date.

Создайте статистику следующим образом:

select s_date,  count(s_date) from big_table where s_date > '01-APR-11' group by s_date;

Также, возможно, вы захотите ознакомиться с «Сбором статистики оптимизатора» оракула, это приятно знать.

веселит.

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