您的位置:首页 > 数据库 > Oracle

Oracle优化你的查询--关于避免索引隐式失效

2010-11-29 09:52 435 查看
说明了Oracle数据库中的索引隐式失效的问题

1、隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.

由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.

错误的例子:select * from test where tu_mdn=13333333333;

正确的例子:select * from
test where tu_mdn='13333333333';

2、对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)

错误的例子:select * from test
where id-1=9;

正确的例子:select * from test where id=10;

3、使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.

错误的例子:select * from test
where round(id)=10; 说明,此时id的索引已经不起作用了

正确的例子:首先建立函数索引,create index
test_id_fbi_idx on test(round(id));

然后 select * from
test where round(id)=10; 这时函数索引起作用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: