我有以下查詢:查詢不使用索引的使用使用表功能
select i.pkey as instrument_pkey,
p.asof,
p.price,
p.lastprice as lastprice,
p.settlementprice as settlement_price,
p.snaptime,
p.owner as source_id,
i.type as instrument_type
from quotes_mxsequities p,
instruments i,
(select instrument, maxbackdays
from TABLE(cast (:H_ARRAY as R_TAB))) lbd
where p.asof between :ASOF - lbd.maxbackdays and :ASOF
and p.instrument = lbd.instrument
and p.owner = :SOURCE_ID
and p.instrument = i.pkey
既然我已經使用表函數開始,查詢已開始對錶quotes_mxsequities
這是大表做全表掃描。
早些時候,當我用IN
條款包括表函數索引正在使用。
如何執行索引使用任何建議?
編輯:
我將努力讓解釋計劃,但只是添加,H_ARRAY
預計將有10k左右條目。 quotes_mxsequities
是一個數百萬行的大表。儀器又是一張大桌子,但行數比quotes_mxsequities
少。 全表掃描正在發生的事情爲quotes_mxsequities
而instruments
使用指數
是'HARRAY'去是'quotes_mxsequities'中數據的一小部分 - 表中有多少行,以及您希望匹配多少行?即索引實際上是否合適? –
@Alex:HARRAY可以有大約10k行,而quotes_mxsequities是一個有數百萬行的巨大表。我們希望匹配大約200萬行。 – Lokesh
如果您在數百萬甚至數千萬中匹配200萬行,則無論如何,全表掃描可能會更有效。你剛剛看到一個不同的計劃,或者性能實際上比'IN'差 - 假設數組和匹配數據是相同的? –