下面是我总结的SQL优化思路,也是对自己做了这几年系统和数据库优化的一个小结,不是很完整,写这个文档是应付领导的,现在共享出来,以后在慢慢更正吧!
数据库层面优化解决思路:
当出现 SQL 查询比较慢问题
在数据库层面,优化方法一般采用,减少访问次数 ,高效 SQL ,建立索引和建立表分区 。
情况一 :一个功能执行很慢,通过 SQL Profile 取出 SQL 语句。如果查看 sql 的各个表,如果查询的表的数据量在 5 万以下,
解决思路:
1 ,看该查询 sql 是否在循环语句的调用,如果是看是否能改成一条 SQL ,尽量减少访问数据库
情况二 ,查询的表数据量比较大(超过 50 万以上)
1 ,检查 SQL 语句的写法 :
这是一个看 SQL 语句的写法:
1, 避免使用: like ‘% 关键字 %’
2, 使用分页,减少查询出数据量。
3, 避免在字段上使用函数:
如 upper (“字段”) = 值 改成 字段 =upper(‘ 值 ’) 。
4 , 尽量少用 ”or” 关键字
2 ,对查询的字段建立索引
如: select * from doc where objid=’ 4028819e181e984c01181f5874f703f1’
查询如果慢的话,就需要在 doc 表的 objid 建立索引
3 ,对大表建立分区
对大型的表一般建立分区,可以按照是否结束( isfinished ) , 是否删除( isdeleted ) , 和模块分区( doc , cusr 等)等来分区。