一次数据库优化经历

原创
2013/09/11 14:45
阅读数 156

网站查询速度巨慢甚至出错, 用户投诉很多, 经查系某个查询长时间占用连接,导致oracle连接到达限制数.

起初怀疑是进行了不必要的查询, 如select * 和无用查询等. 

后发现问题出在一句sql上:

……where upper(xx)=x

相当于全表查询了, 几百万条数据的数据库查一遍

改为

where xx=转大写(x) or xx=转小写(x)  (转大小写的函数在oracle和各种编程语言里都有, 只要传递进去值是这个逻辑即可)

后终于开始走索引, 秒查完, 然后网站就顺畅了, 用户舒服了, 客服妹子们不再被用户骂了.



展开阅读全文
打赏
0
0 收藏
分享
加载中
梅开源博主

引用来自“kanlianhui”的评论

可以建立函数索引来解决这类问题。13
没权限动数据库。
2015/03/09 09:53
回复
举报
可以建立函数索引来解决这类问题。13
2015/03/08 21:09
回复
举报
弄个函数索引不就好了。。
2014/04/14 22:43
回复
举报
梅开源博主

引用来自“Timco”的评论

为什么前者是全表查询呢?后者不是?

where upper(某字段名)=x 是会把该字段所有值都upper一下然后和x比。直接xx=x是会走索引比较。具体原理不详,若干年前不记得哪里看过。
2013/12/02 09:35
回复
举报
为什么前者是全表查询呢?后者不是?
2013/12/01 11:35
回复
举报
更多评论
打赏
5 评论
0 收藏
0
分享
返回顶部
顶部