EDIT2:改寫整個問題,以便更清楚集團通過引起查詢執行時間的大幅增加
我有相當長的使用條款,產生400行和10列的子查詢表在相當大的一張桌子的第二個下面。
但是我希望通過該子查詢創建一個組,然後問題出現 - 當我執行該組並在with子句中進一步使用它時,查詢運行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
是with子句
但是前面部分,如果我再次用它作爲子查詢,例如:
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專輯 –