EDIT2: перефразировать весь вопрос так понятнееGroup, вызывая огромное увеличение времени выполнения запроса
У меня довольно долго с пунктом, который генерирует таблицу подзапроса 400 строк и 10 столбцов в течение секунды от довольно больших столов.
Однако я хочу создать группу по этому подзапросу, и там, где возникает проблема, - когда я делаю эту группу и использую ее далее в предложении запроса, запрос выполняется в течение 15 минут и по-прежнему нет результата, поэтому Я его прекратил.
Если я использую только группу, и остановить сценарий там, то она проходит под второй, с помощью этого сценария:
select ROK,d.typ,LIM_DGR_KOEF, LIM_HODNOTA, LIMIT_OD, LIMIT_DO,lek_uvazky,
sum(d.dok_sk_vyp) suma_fakt,
sum(d.dok_sk_vyp-d.dok_sk_uzn) neuzn_vyk,
sum(d.dok_sk_uzn) suma_uzn,
sum(d.dok_sk_uct) suma_uct,
count(*) as pocet_vyk
from portfolio d
group by ROK,d.typ,LIM_DGR_KOEF, LIM_HODNOTA, LIMIT_OD, LIMIT_DO,lek_uvazky
Где portfolio
находится в предыдущей части с п
Однако , если я использую его снова как подзапрос, например:
pf as(
select ROK,d.typ,LIM_DGR_KOEF, LIM_HODNOTA, LIMIT_OD, LIMIT_DO,lek_uvazky,
sum(d.dok_sk_vyp) suma_fakt,
sum(d.dok_sk_vyp-d.dok_sk_uzn) neuzn_vyk,
sum(d.dok_sk_uzn) suma_uzn,
sum(d.dok_sk_uct) suma_uct,
count(*) as pocet_vyk
from portfolio d
group by ROK,d.typ,LIM_DGR_KOEF, LIM_HODNOTA, LIMIT_OD, LIMIT_DO,lek_uvazky
)select * from pf
Затем объяснить изменения плана и очень тяжелый.
Вот объясняющие планы: http://imgur.com/a/nJpT8
Есть ли способ, чтобы диктовать оптимизатор выбрать тот же путь, что и в примере быстрее?
Как минимум, вам нужно будет опубликовать план запроса для обоих. Очень сложно рассуждать о том, что мог бы сделать оптимизатор, а затем спекулировать на предположениях о том, почему это могло бы сделать то, о чем мы размышляем. –
Пожалуйста, добавьте план выполнения для исходного запроса. –
@JustinCave Я добавил планы на imgur album –