Предложение необходимо, чтобы избежать сканирования таблицы в большом представлении с множеством повторяющихся значений - PullRequest
0 голосов
/ 11 января 2011

Может ли кто-нибудь предложить решение для ускорения одного из наших процессов?У нас есть представление, используемое для отчетов, которое объединяет все 10 таблиц.Представление имеет 180 миллионов строк.Мы хотели бы создать список отдельных значений отдельных столбцов.Текущий SQL, сгенерированный средством создания отчетов, делает отдельный выбор в представлении, который занимает 10 минут.Предпочтительно решение будет автоматически обновляться.Мы пытались создать MQT в DB2 udb V8 как единое целое, сразу же обновить с небольшим успехом.Любые предложения будут с благодарностью.

Чарльз.

1 Ответ

0 голосов
/ 12 января 2011

В DB2 8.2 существует множество ограничений для немедленного обновления MQT, и они могут оказать существенное влияние на производительность приложений, выполняющих запись в базовые таблицы. Тем не менее, вы можете иметь возможность использовать MQT. Однако вместо использования SELECT DISTINCT попробуйте сделать запрос похожим на:

select yourcolumn, count(*) as ignore
from union_all_view
group by yourcolumn

Столбец (yourcolumn) from должен быть определен как NOT NULL, чтобы это работало (в DB2 8.2). Оптимизатор может не выбрать этот MQT, если вы по-прежнему используете SELECT DISTINCT для представления объединения всех, поэтому вам может потребоваться запросить MQT (или представление, определенное поверх него) напрямую. Игнорировать столбец «игнорировать» в MQT - это только для DB2; если вы действительно не хотите его видеть, вы можете создать vew поверх MQT.

Однако это действительно проблема проектирования базы данных. Зачем вам нужно сканировать 180 миллионов строк данных, чтобы найти уникальные значения в определенном столбце? Почему эти значения уже не находятся в их собственной таблице, а внешние ключи определены для нее из каждой из 10 базовых таблиц?

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