从系统优化总结:
1、数据库设计--表、字段、类型
-- 根据业务处理设计 。比如:是否需要主从表,哪些存主,哪些存从,
主表数据:业务主流程数据
从表数据:业务分支流程数据
-- 性能设计。比如 表示时间可以拆分:日期、时间用字符串类型, 查询类型转换等。
比如:考虑数据冗余,空间换时间。
2、程序设计
-- 健壮、灵活、可拓展、可复用
3、sql的性能
-- 常见的sql性能优化注意事项要注意--
--1、避免全表扫描 2、让索引生效 3、关联查询依小为先
1、优先考虑使用等号(=)操作;其次考虑使用大于等于(>=),小于等于(<=)操作;然后再考虑大于(>),小于(<)操作
2、减少使用LIKE操作,避免使用不等于操作
3、谨慎使用排序(SORT BY)和分组(GROUP BY)
4、使用LIKE的时候,应该使用右匹配(A%),而避免使用左右匹配(%A%)和左匹配(%A),使用右匹配时尽快能提供较多的数据降低查询开销
5、使用AND时,筛选结果集小的表达式应该置于AND左侧,使用OR语句时,筛选结果集大的表达式应该列于OR左边
6、避免不必要的排序。使用UNION ALL代替UNION,添加恰当的索引,或在DISTINCT,GROUP BY,ORDER BY子句涉及的列上创建索引
7、避免对三个以上的字段排序
8、避免对长度超过30的字符字段进行排序
9、避免在排序字段上添加表达式
10、不使用任何聚合函数情况下,使用DISTINCT代替GROUP BY
11、根据业务逻辑选择最低粒度的隔离级别。在允许脏读的前提下,在查询语句中应该使用WITH UR,避免不必要的锁表。
12、IN中参数个数避免超过20个
13、查询语句的结果字段应该书写明确的列名,不应该使用通配符
14、不应该在代码使用DDL相关操作
15、查询语句应该设置有效的限定条件,返回预期的结果集,避免返回过大的结果集
16、使用SELECT...FETCH FIRST n ROWS ONLY限制结果集大小,建议100个以内
17、用于比较的数据应该使用相同的数据类型,避免发生数据转换
18、SQL语句变量应该使用参数化,尤其是id类型,时间类型字段等
19、避免对索引字段进行函数操作
20、SQL中的子查询嵌套层次避免超过4层
21、查询表达式左边避免出现函数以及其他运算表达式,必须的表达式应该用替代的方法在右边实现
22、所有的SQL应该尽可能提前在测试环境上进行优化和调试。获取必要的执行计划和运行时间信息
4、数据存储持久化
-- 事物的管理:力度、颗粒、传播性
-- 尽可能原子提交,提高数据存储速度、业务处理速度
5、数据查询
-- 缓存的使用
-- 避免全表扫描
6、日志、注解
-- 日志配置、打印规范,用于业务监控、问题跟踪和定位
-- 注释可读性强
--参考 最佳日志实践:http://blog.jobbole.com/56574/
------------------------后续更新中......-----------------------------