你好我有一個SQL查詢,我試圖優化。這個查詢在0.3秒內完成,但我需要爲噸的不同storeIds運行相同的查詢 - 無論如何要優化此查詢以使其更快,或者更改它以便一次獲得所有storeIds。優化Oracle SQL查詢
我總是可以在C#中創建一個新命令,連接到該命令以使其成爲大量不同查詢的聯合。
select /*+ PUSH_SUBQ */ *
from mytable r
where r.s in (1, 7)
and r.d in (1, 75)
and r.storeid = 1162
and r.period = 20110528
and r.pid in (select /*+ no_unnest qb_name(subq1) */
productid from otherTable where itmid=9999)
我已經試過這樣的東西,但它需要永遠。
select /*+ PUSH_SUBQ */ *
from mytable r
where r.s in (1, 7)
and r.d in (1, 75)
and r.storeid in (1162, 1223, 1231, 51231, 231, ...)
and r.period = 20110528
and r.pid in (select /*+ no_unnest qb_name(subq1) */
productid from otherTable where itmid=9999)
MyTable的有索引這樣的: pid是不唯一的,分區,NO JOIN_INDEX 所有其他的列是唯一的,分區,NO JOIN_INDEX
你是什麼意思「所有其他列都是唯一的」?每一列都是獨一無二的(我認爲不是)?或者,除了pid外,還有一個涵蓋所有列的唯一索引?或者是其他東西?如果有多列索引,那麼每個索引中的列順序是什麼?索引是分區的,也是表格嗎?當前查詢的執行計劃是什麼? – 2011-06-10 22:42:09
你能發佈實際執行計劃嗎?您可以使用DBMS_XPLAN獲取它。 – eaolson 2011-06-11 00:53:30
另外,您使用的是哪個版本的Oracle? – 2011-06-11 04:43:39