- WHERE 前导列一定是使用最频繁的列。
- 数据库备注,字段备注,存储过程备注,存储过程变量备注。
- 主键定义,索引定义,字符集定义,数据库表引擎定义。
- 字段类型一定要选择最佳,字段全部NOT NULL,固定长度字段。
- 缩进。
- 永远不要出现星号。
- INSERT INTO 写全字段名。
- 行级操作在存储过程,字段操作在Web服务器。
- 必设主键。
- 数字/字符。
- 有限的取值用ENUM。
- IN / NOT IN / OUT / OR / != / <> 引起索引失效。
- 尽量不要在列上进行操作。
- DELETE / INSERT 锁表。
禁止使用循环。
禁止使用游标。
禁止使用超过15句sql语句。
禁止两层以上sql语句嵌套。
变量使用前一定要定义,定义一定要在最前方。
只能使用单层IF THEN ELSE。
-
单条记录返回一定要加LIMIT 1,避免全表扫描。
8.存储过程内部禁止再调用存储过程。
9.对于只读存储过程,Read Committed事务。
10.全部存储过程名字需要加注释。
11.全部字段名称需要加注释。
12.日期时间函数尽量用TIMESTAMP 而不是DATETIME类型。
13.GROUP BY 与ORDER BY 与DISTINCT 不要连用。
14.DISTINCT与LIMIT联合使用,比GROUP BY要好很多。
15.SELECT * FROM (SELECT * FROM chu ORDER BY b desc,a desc LIMIT 100) AS a GROUP BY a.b;
16.禁止使用UNION,以及超过5个表的联合查询。
17.每一句SQL,都需要有详细注释。SELECT a.col_a, b.col_b FROM tb_a AS a, tb_b AS b WHERE a.col_2 = b.vol_2;