1 一个业务保证在同一事务中
2 SQL语句的SQL保留字大写
3 不要写SELECT * FROM xxx, 请将需要的字段名称写出来
4 Insert语句一定要给出要插入值的字段列表,以保证更改了表结构增加了字段也不会影响现有系统的运行
5 两张以上的表请使用别名,别名使用1到3个字符表示
6 多表连接时,使用表的别名来引用列
7 不许出现带参数的sql语句拼接,所有的参数必须用参数化传进语句中
8 不等于统一使用<>,不使用!=
9 判空,统一使用IS NULL
10 存储过程中不允许进行 COMMIT 或者Rollback操作,所有这些操作都在存储过程外面统一处理
11 尽量少用嵌套查询,在查询字段中不允许出现子查询
12 尽量用多表连接代替EXISTS子句
13 尽量用EXISTS代替DISTINCT
14 尽量用EXISTS代替IN
15 尽量用NOT EXISTS代替NOT IN
16 尽量用UNION ALL代替UNION(如果可以)
17 查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面
18 尽量避免对索引列进行计算,查询时要尽可能将操作移至等号右边
19 大量的排序操作影响系统性能,所以尽量减少order by和group by操作。如必须使用排序操作,排序尽量建立在有索引的列上
20 对于索引的比较,尽量避免使用NOT
21 避免使用distinct ,可以使用not exist等替换;
22 避免使用自增字段,使用sequence替代;
23 避免把日期字段字符串化比较,可以使用>= ,< 等比较符替换;
24 大家养成使用explain查看执行计划的习惯,特别是对多表联接和数据量大的表进行查询等;
25 尽量避免使用 like “%...."的情况;
26 避免使用 select ... from ...where ... for update limit 1 这样的sql,可以使用查询返回一个list,然后遍历进行 select  ... for update ,成功锁住一条以后,进行其他的业务处理;
27 避免对datetime字段进行截断保存,如有需要可以在显示的地方进行截断;
28 避免让db做一些额外的事情,特别是一些界面显示相关的格式化工作;

posted on 2013-03-29 09:46  AFH  阅读(343)  评论(0编辑  收藏  举报