sql oracle: рекомендуется использовать базовое представление в качестве абстрактного основания для более специализированных представлений - PullRequest
1 голос
/ 14 февраля 2011

У меня есть схема со многими связанными таблицами.Представление позволило мне объединить все эти таблицы в одну большую таблицу, удобную для использования в моем приложении.

Теперь мне нужно представить несколько разные представления для приложения: еще одно отношение к настоящему, некоторые дополнительные столбцы,

A very simplified example: the real one has many fields and tables related
Base request: 
select T1.C1, T2.C2
from T1, T2
where ...

Specialized request A:
select T1.C1, T2.C2, T2.C3, T4.C4
from T1, T2, T4
where ...

Specialized request B:
select T1.C1, T2.C2, T2.C3, T5.C5
from T1, T2, T5
where ...

Считаете ли вы хорошей идеей (как с точки зрения обслуживания, так и с точки зрения производительности) создать первый вид base_view, а затем повторно использовать этот вид для создания view_A и view_B?

Ответы [ 3 ]

5 голосов
/ 14 февраля 2011

Предполагая, что вам всегда нужно соединять T1 и T2, тогда да, базовый вид был бы хорошей идеей. Это уменьшит стоимость обслуживания, когда вам нужно будет добавить дополнительные представления.

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

2 голосов
/ 14 февраля 2011

Это может быть полезно, но вам нужно позаботиться. Стоит прочесть эту ветку AskTom по теме .

1 голос
/ 14 февраля 2011

Вы можете создать материализованное представление, которое объединяет «базовый» набор базовых (обычных) таблиц и включает любые / все столбцы, которые вам понадобятся в «большинстве» запросов. Позвольте этому представлению циновки выполнять тяжелую работу, сохраняя результаты в таблице снимков (добавляйте индексы по мере необходимости).

Это будет сделано в экземпляре сборки данных и обновлено по некоторому расписанию, а затем перенесено в производственный экземпляр приложения.

Приложения могут отображать этот вид матов, при необходимости время от времени присоединяясь к другому столу.

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