我有以下查询:查询不使用索引的使用使用表功能
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'差 - 假设数组和匹配数据是相同的? –