你的问题我刚处理过,是由optimizer_mode参数引起的,该参数的默认值为choose,即为如表有statis则查询走基于cost的方式,否则走基于rule的方式,因些你可以有以下几个解决方法。
1、简单的在init<sid>.ora中设optimizer_mode=rule,重起数据库。
2、使用analyze table table_name(索引基表) delete statistics;
3、最后一个万能办法,将表和索引drop掉,重建。
1、简单的在init<sid>.ora中设optimizer_mode=rule,重起数据库。
2、使用analyze table table_name(索引基表) delete statistics;
3、最后一个万能办法,将表和索引drop掉,重建。
SELECT COUNT (a.yhbh) AS yhsm
FROM jb.jb_yhk a, qx.qx_dt_yhjbsjk b
WHERE a.csdm = 14
AND a.yhbh = b.yhbh
AND a.qxdm IN (24,32,40,48,56,64,72,80,158,159,160,161,
168
)
AND a.pzrq <= LAST_DAY (TO_DATE ('2003-1-1', 'YYYY-MM-DD'))
AND a.jyzt = 1
AND b.jylx = 1
AND b.yhjb IN (2)
AND a.jjlx IN (10, 11, 12, 13, 14, 15, 16, 17, 18)jb.jb_yhk上有一个主键yhbh(业户编号),本身就是索引对吧?
jb.jb_yhk上还有一个索引: qxdm(区县代码)index_name Unique Column name Position
PK_JB_YHK UNIQUE yhbh 1
PK_JB_QXDM NONUNIQUE qxdm 1
qx.qx_dt_yhjbsjk 上有一个索引 yhbh index_name Unique Column name Position
PK_QX_YHBH NONUNIQUE yhbh 1