Oracle函数中使用索引列时失效
2017-02-26 00:00
288 查看
摘要: Oracle函数中使用索引列时,执行计划中并没有真正使用到索引,而是进行全表扫描,当表的数据量十分巨大时,查询效率十分低效。
本周在公司的时候,被领导分配一个任务,优化一个报错的SQL。
第一次做SQL优化,没有考虑太多,找到明显报错的地方,改正后,在测试环境测试了一下,发现速度不慢,于是发到生产上去。但是发到生产之后,发现效率十分低下,一个查询请求使得服务器应用挂起很久,几个查询同时请求时,服务器应用就挂掉了。
于是向大神同事请教,同时马上把生产上效率低下的语句撤掉。大神开始分析,查看可以优化的地方,最后发现问题出在,表的一个列存在列索引的,但是在查询的时候没有用上索引!进一步分析,该列是在Oracle函数中使用的,Oracle函数中使用列的时候会使得索引列失效!于是,把SQL语句中使用列索引的函数,换一种方式实现,没有用到函数,然后在生产验证,查询速度神奇般的提升上来了。
教训:测试环境中没有问题的SQL不代表在生产环境中没有问题,还要多考虑一番~
本周在公司的时候,被领导分配一个任务,优化一个报错的SQL。
第一次做SQL优化,没有考虑太多,找到明显报错的地方,改正后,在测试环境测试了一下,发现速度不慢,于是发到生产上去。但是发到生产之后,发现效率十分低下,一个查询请求使得服务器应用挂起很久,几个查询同时请求时,服务器应用就挂掉了。
于是向大神同事请教,同时马上把生产上效率低下的语句撤掉。大神开始分析,查看可以优化的地方,最后发现问题出在,表的一个列存在列索引的,但是在查询的时候没有用上索引!进一步分析,该列是在Oracle函数中使用的,Oracle函数中使用列的时候会使得索引列失效!于是,把SQL语句中使用列索引的函数,换一种方式实现,没有用到函数,然后在生产验证,查询速度神奇般的提升上来了。
教训:测试环境中没有问题的SQL不代表在生产环境中没有问题,还要多考虑一番~
相关文章推荐
- oracle 使用ID关键字作列名导致索引失效
- oracle 性能优化操作十四: 使用基于函数的索引
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例
- 使用Oracle函数索引简单介绍(一般)
- oracle 索引使用及索引失效总结
- SQL Server 聚集索引在函数中使用以至失效(案例)
- Oracle 不使用索引,索引失效的几种情况
- Oracle模糊查询之(3.3从使用函数和sql语法角度来提高模糊查询效率 三)使用Oracle的instr函数与索引配合提高模糊查询的效率
- SQL中一些不经意隐式类型转换或者函数使用导致索引失效问题
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例
- 数据库字符集不一样导致函数或存储过程中使用的索引失效
- oracle 性能优化操作十四: 使用基于函数的索引
- Oracle PL/SQL之函数索引(Function-based indexes)使用示例
- oracle 索引使用及索引失效总结
- 使用索引的误区之三:基于函数的索引——Oracle
- Oracle 中DECODE 函数的使用简介
- Oracle中Decode()函数使用技巧
- Oracle 分析函数的使用
- Oracle 分析函数的使用
- Oracle 分析函数的使用