Oracle материализовал вопрос - PullRequest
4 голосов
/ 23 августа 2011

У меня есть таблица, которая содержит информацию о различных событиях, например,

CREATE TABLE events (
    id int not null primary key, 
    event_date date, ...
) 

Я понял, что 90% всех запросов имеют доступ только к событиям сегодняшнего дня;старые строки сохраняются для истории и в конечном итоге перемещаются в архивную таблицу.
Однако таблица событий все еще велика, и мне интересно, могу ли я улучшить производительность, создав материализованное представление, которое имеет что-то вроде WHERE event_date = trunc(sysdate) и, возможно, индексна event_date?Это вообще разрешено?

Спасибо

1 Ответ

4 голосов
/ 23 августа 2011

да, это разрешено, см. «Материализованное представление первичного ключа»:

Материализованные представления первичного ключа могут содержать подзапрос, так что вы можете создать подмножество строк на сайте удаленного материализованного представления

и «сложное материализованное представление»

Если вы обновляете редко и хотите повысить производительность запросов, используйте метод A (сложное материализованное представление).Если вы обновляете регулярно и можете жертвовать производительностью запросов, тогда используйте метод B (простое материализованное представление).

при http://download.oracle.com/docs/cd/B10500_01/server.920/a96567/repmview.htm

В вашем примере велики шансы, IMHO, что это не так«сложный материализованный взгляд»:

CREATE MATERIALIZED VIEW events_today REFRESH FAST AS
SELECT * FROM EVENT WHERE event_date = trunc(sysdate);

Просто попробуйте и посмотрите, принимает ли Oracle это с предложением REFRESH FAST.

РЕДАКТИРОВАТЬ - другой вариант:

В зависимости от версии DB Edition (Enterprise + Partitioning) и версии (11gR2) вы можете использовать новую функцию Oracle, называемую разбиением INTERVAL, для определения «ежедневных разделов» в существующей таблице.Таким образом, большинство ваших запросов выполняется намного быстрее без эффективного дублирования данных - см. http://www.oracle.com/technetwork/database/options/partitioning/twp-partitioning-11gr2-2009-09-130569.pdf

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