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

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

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

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


person aw crud    schedule 23.03.2010    source источник
comment
Эта программа также блокирует секционированные таблицы? Потому что если нет, то это был бы выход.   -  person kurast    schedule 23.03.2010


Ответы (6)


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

person carson    schedule 23.03.2010

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

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

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

person Juliet    schedule 23.03.2010

Нужно будет посмотреть планы. Вы можете изменить порядок соединения, добавить критерии или дать подсказки, чтобы сделать его быстрее, но без плана объяснения вы не знаете, почему это медленно, поэтому вы даже не знаете, сможете ли вы это сделать. Быстрее.

person Grant Johnson    schedule 23.03.2010

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

person rjmunro    schedule 23.03.2010

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

person Jeff Sternal    schedule 23.03.2010

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

person Lars Mæhlum    schedule 23.03.2010
comment
Индексированное представление — это терминология SQL Server — в Oracle они называются материализованными представлениями. - person OMG Ponies; 23.03.2010