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

Oracle函数中使用索引列时失效

2017-02-26 00:00 288 查看
摘要: Oracle函数中使用索引列时,执行计划中并没有真正使用到索引,而是进行全表扫描,当表的数据量十分巨大时,查询效率十分低效。

本周在公司的时候,被领导分配一个任务,优化一个报错的SQL。

第一次做SQL优化,没有考虑太多,找到明显报错的地方,改正后,在测试环境测试了一下,发现速度不慢,于是发到生产上去。但是发到生产之后,发现效率十分低下,一个查询请求使得服务器应用挂起很久,几个查询同时请求时,服务器应用就挂掉了。

于是向大神同事请教,同时马上把生产上效率低下的语句撤掉。大神开始分析,查看可以优化的地方,最后发现问题出在,表的一个列存在列索引的,但是在查询的时候没有用上索引!进一步分析,该列是在Oracle函数中使用的,Oracle函数中使用列的时候会使得索引列失效!于是,把SQL语句中使用列索引的函数,换一种方式实现,没有用到函数,然后在生产验证,查询速度神奇般的提升上来了。

教训:测试环境中没有问题的SQL不代表在生产环境中没有问题,还要多考虑一番~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SQL优化