我正在使用oracle sql。我有一個查詢:如何提高sql查詢的性能?
QUERY1
select t1.object_id object1, t2.object_id ... --etc--
from objects t1, objects t2, object_types t3 ... --etc--
where ... --many conditions--
它的實際工作。現在我必須選擇t1.object1的n級父項。
它我查詢此:
QUERY2:
select object_id
from objects
where object_type_id in
(--query3--)
and rownum = 1
connect by prior parent_id = object_id
start with object_id= -- t1.object_id value --;
它的工作原理也一樣,如果我手動編寫t1.object_id值。問題是,如果我編寫一些數字而不是query3,它的運行速度將快100倍。 IMO發生,因爲查詢每次執行每個對象。
現在我需要做出一個性能良好的大查詢。我該怎麼做?
首先,我需要提高query2的性能。我希望query3不要執行很多次。我可以將它bulk collect
它變成一些變量,但我想盡可能多地使用pl/sql。所以我想用 - 作爲語法。
with types as (--query3--)
select object_id
from objects
where object_type_id in
(types)
and rownum = 1
connect by prior parent_id = object_id
start with object_id= -- t1.object_id value --;
此查詢的輸出是exeption。 我該如何儘可能快地做到這一點?
如何選擇查詢1中的父類型?我必須在where子句中編寫分層查詢嗎?
運行查詢時出現異常? –