为什么我的同一个表中,有两个字段。当查询
select distinct mbrid,dos from fi05 where
(
dx5 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
or dx6 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
) 的时候这个表就不使用位图索引查询啊?(两个字段都建有同样的位图索引)
但是当单独查询dx5的时候也就是
select distinct mbrid,dos from fi05 where
(
dx5 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
) 就是用索引啊。 为什么有dx6就不使用索引啊?
都有什么样的可能啊??^^
select distinct mbrid,dos from fi05 where
(
dx5 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
or dx6 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
) 的时候这个表就不使用位图索引查询啊?(两个字段都建有同样的位图索引)
但是当单独查询dx5的时候也就是
select distinct mbrid,dos from fi05 where
(
dx5 in('40201', '40211', '40291', '40401', '40411', '40491','4280', '4281', '42820','42821','42822','42823',' 42840','42841','42842','42843')
) 就是用索引啊。 为什么有dx6就不使用索引啊?
都有什么样的可能啊??^^
解决方案 »
- 根据一个动态的值去查一个表,用有参游标怎么返回所查询的结果
- 为什么我以conn / as sysdba连接,它说我没权限。非要conn sys/oracle as sysdba才可以连接呢?
- 这个统计+连接的语句错在哪里
- server2003操作系统上安装oracle出错
- 创建的表空间数据文件能否顺序存储。
- 求助:存储过程执行报错:ORA-06502: PL/SQL: 数字或值错误
- 本地数据库如何配置啊
- 网上方法不管用!iis6.0网站访问oracle报错,需要8.17或更高版本
- oracle 如何实现sql server 同样的功能???
- 如何找不到结点
- 请问二道SQL题:成绩单、业绩表
- 求一条SQL语句写法?
在你http://topic.csdn.net/u/20090924/13/ccfd0e57-58a1-4dc6-baf8-ef7939072016.html?46609这个帖子中提到,如果是两个表的话,那么就先用dbms_stats.gather_table_stats分析一下表的统计信息以便ORACLE做出正确的判断是否使用索引。
在本帖中的情况,运行一个查询,如果只需表中相对较少的数据,CBO会使用索引;但是如果估计通过索引获取的行数超过了一个阈值,优化器将开始全表扫描。
只要把不使用位图索引的那个字段放到sql语句中,那么这整个sql语句就都不使用索引了……
这是为什么啊?
急啊?? 我没有分了
谢谢各位帮忙解决一下啊! 我的版本是oracle10g的 数据量是70w