Как я могу ускорить запросы к таблицам, к которым я не могу добавить индексы? - PullRequest
6 голосов
/ 23 марта 2010

Я обращаюсь к нескольким таблицам удаленно через DB Link. Они очень нормализованы, и данные в каждой датированы. Из миллионов записей в каждой таблице только подмножество ~ 50 000 записей является текущим.

Таблицы управляются изнутри коммерческим продуктом, который отлично подойдет, если я добавлю индексы или внесу изменения в его таблицы любым способом.

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

Ответы [ 6 ]

9 голосов
/ 23 марта 2010

Вы можете попытаться создать материализованное представление некоторого подмножества таблиц по ссылке в БД и затем запросить их.

6 голосов
/ 23 марта 2010

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

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

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

4 голосов
/ 23 марта 2010

Вам нужно будет посмотреть на планы. Вы можете изменить порядок объединения, добавить критерии или предоставить подсказки, чтобы сделать это быстрее, но без плана объяснения вы не знаете, почему это происходит медленно, поэтому вы даже не знаете, ЕСЛИ вы можете сделать это. быстрее.

2 голосов
/ 23 марта 2010

Не могли бы вы взять ежедневный дамп нужных вам записей в вашу собственную базу данных / таблицы?

2 голосов
/ 23 марта 2010

Архив данных, которые больше не актуальны. (Или, если это не приемлемо, данные, превышающие некоторый порог устаревания, соответствуют вашим требованиям.)

1 голос
/ 23 марта 2010

А как насчет создания материализованного / индексированного представления? Это может немного помочь.

...