Здравствуйте, night beast, Вы писали:
NB>Здравствуйте, DrDred, Вы писали:
DD>>Можно попробовать переписать его по-нормальному, чтобы дать шанс оптимизатору Оракла
NB>
DD>>select dt.f1, dt.f2, t1.p1
DD>> from table1@db1 dt
DD>> join t1 on t1.p2 = dt.f3
NB>
NB>тут наверно left join NB>нужно в плане посмотреть, используются ли индексы
Да, согласен. Все будет зависеть от плана запроса. Тут как раз и есть засада с таблицей через dblink — по ней статистики нет, поэтом далеко не факт, что будет выбран оптимальный план запроса. Но так как у нас нет вообще никакой информации об сущности этих таблиц — то строить свои предположения тем более бессмысленно.
Здравствуйте, Wit, Вы писали:
Wit>Здравствуйте! Можно ли ускорить выполнение такого запроса:
Wit>
Wit>select f1,f2,(select p1 from t1 where p2 = table1.f3) as f3 from table1@db1
Wit>
Wit>т/е по некоторым полям из таблицы table1 с базы db1 подставляем значения таблицы t1 текущей БД
Wit>запрос select f1,f2,f3 from table1@db1 выполняется пару секунд, а тот что выше раз в 100 дольше. t1 проиндексирована
Неплохо было бы кроме самих запросов увидеть еще и планы. Это раз.
Могли бы хотя бы приблизительно дать информацию по размерам таблиц, сколько записей (тысячи, миллионы, сто миллионов)
Во-вторых, некорректно говорить, что у вас последний запрос выполняется пару секунд. Это первые N строк выборки вытягиваются у вас по dblink`у за пару секунд, а делать фетч до конца пробовали? Скорее всего полная выборка будет фетчиться столько же, сколько и идет верхний запрос либо сравнимо с этим.
--------------------------------------------------------------
Правильно заданный вопрос содержит в себе половину ответа
Здравствуйте, Anvano, Вы писали:
A>Неплохо было бы кроме самих запросов увидеть еще и планы. Это раз. A>Могли бы хотя бы приблизительно дать информацию по размерам таблиц, сколько записей (тысячи, миллионы, сто миллионов)
Тут не просто план, а трассировку неплохо бы увидеть. Вся необходимая инфа там будет.
Можно попробовать переписать его по-нормальному, чтобы дать шанс > оптимизатору Оракла > > select dt.f1, dt.f2, t1.p1 > from table1@db1 dt > join t1 on t1.p2 = dt.f3
А чем тебе тот-то вариант не нравится ?
> Если не поможет, можно попробовать вариант с materialized view.
Ага, ты ещё предложи хранилище данных отдельное создать для оптимизации
этого сраного запросика.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: ускорить select через database link Oracle
От:
Аноним
Дата:
17.06.10 04:44
Оценка:
в таблицу table1@db1 вставляется в сутки 10 млн. строк, она секционирована по месяцам, а t1 — маленькая но их несколько(для примера написал одну), там от 100 до 100 тыс записей. В запроесе еще есть условие выбора, но для примера сразу не написал, пусть будет
select f1,f2,(select p1 from t1 where p2 = table1.f3) as f3 from table1@db1 where f4 = 543