你好我有一个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