Запрос к таблице, связывающей миллионы строк из базы данных Oracle - PullRequest
1 голос
/ 19 декабря 2011

У меня есть таблица финансов (столбец: дата, месяц, квартал, amount_usd, col1, col2, col3).

Просто запрос ...

select sum(amount_usd) from finance
group by date

... занимает 7 секунд

select sum(amount_usd) from finance
group by month

... занимает 6 секунд

select sum(amount_usd) from finance
group by quarter

... занимает 5 секунд

Итак, я подумал о хранилище данных

Я создал измерение времени и иерархию как

  • дата как ребенок месяца
  • месяц как ребенок квартала

Теперь я застрял ...

Какой будет моя таблица фактов? А как запросить данные из таблицы фактов?

Это может быть очень простой вопрос. Но я новичок в этом.

Спасибо

1 Ответ

6 голосов
/ 19 декабря 2011

"так что мои простые запросы требуют времени и думают о наличии данных концепция склада ... "

Семь секунд не медленно . По крайней мере, не «нужно хранилище данных» медленно. Хранилище данных - это стратегическая (обычно на уровне предприятия) среда, а не метод настройки.

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

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

...