0
我有一個查詢從開發人員發送給我,並試圖執行它時,我遇到了一些神祕的問題(至少對我來說)。Oracle查詢與SELECT *運行良好,但與SELECT column1,column2掛起'
SELECT h.toot_id, trunc(sysdate)
FROM test.car_ehk h
WHERE toot_id in
(SELECT t.toot_id
FROM test.car_ehk e,
test.car t
WHERE e.toot_id=t.toot_id
and t.toot_type_id < 8
and e.toot_ehk_id=
(SELECT max(toot_ehk_id)
FROM test.car_ehk
WHERE toot_id = e.toot_id)
and e.sent_lop_aeg is null
and t.alg_aeg <> e.sent_alg_aeg
and e.ehk_reply ='OK'
)
and toot_ehk_id =
(SELECT MAX(t2.TOOT_EHK_ID)
FROM test.car_EHK t2
WHERE TOOT_ID=H.TOOT_ID);
不起作用。查詢只是繼續運行,DBA不得不殺死它。
當我用select h.*
代替select h.toot_id, trunc(sysdate)
它的作品。
怎麼回事?
是car_ehk或car largeable表,獲取大量的數據添加或刪除? (我在質疑表的統計數據是否關閉,這在某些情況下可能會導致執行計劃錯誤,並且在其他情況下可以正常工作)我也在努力解決這個問題,好像應該有更好的方法寫這個的方法。你能用普通英語解釋這個應該做什麼嗎? (樣本數據w /預期結果會很好) – xQbert
當你刪除'trunc(sysdate)'而只保留'h.toot_id'時會發生什麼? –
如果我只留下h.toot_id,則沒有任何變化。 表格並不那麼大,count(*)給出了大約200k個結果。表格包含汽車的多個條目版本,並且(選擇MAX(t2.toot_ehk_id)...東西試圖獲得最新版本。 – user3876898