读书人

索引查询需要什么条件上面答案是B

发布时间: 2012-08-10 12:19:33 作者: rapoo

索引查询需要什么条件,下面答案是B
oracle数据库中表t_staff的staff_num字段上已经建立了索引,下面哪条语句能够正确的使用到该索引?B
A.select * from t_staff where staff_num <> 10000
B.select * from t_staff where staff_num + 2000 > 10000
C.select * from t_staff where staff_num is not null
D.select * from t_staff where to_char(staff_num) = '3145'

请各位高手解答下,(1)数据库建立索引需要什么条件?
(2)建立完怎样查询索引,需要注意什么问题?
(3)上面答案是B,为什么?

[解决办法]
1. 不需要什么特殊的条件
2. 就一点“保持原汁原味”:不要在列上进行任何运算(如果确实有,那就建立函数索引),不要有“不等于”和is,不要进行类型转换。
[解决办法]
A.违反了NOT原则,使用<>不走索引。
C.违反了NULL原则,有IS NULL或者IS NOT NULL不走索引。
D.尽量不在WHERE字句用函数,否则要建立函数索引。

可以参考http://wenku.baidu.com/view/363a9e2758fb770bf78a5572.html
[解决办法]
1:建立索引原则
经常查询使用的列,并且性能慢的情况下建立索引,根据实际需求建立不同的索引,复合索引,单列索引,位图索引等

2:查询表上索引
非分区:select * from dba_indexes where
分区:select * from dba_ind_partition where
要注意索引是否有效,如果为INVLIDATE 的话,要重建索引

3:要理解这个就要深入理解索引的概念
一般来说,索引键值无法直接使用的话则基本上不能正确使用索引了

读书人网 >oracle

热点推荐