规范:SQL法则
-
SQL编写完成后,应使用Explain查看一下执行计划
时刻注意SQL质量,多观察是否走预定索引
-
在进行Delete或Update语句时,请思考添加Limit
提高效率,避免长事务,避免CPU打满(数据量特大)
-
设计数据库表时,要注意一定要添加表字段、字段值说明(存在固定值时)、以及表名等对应的注释
方便团队协作,以及更容易换人维护
-
变更SQL的操作,请先在开发/测试环境进行执行,没问题后,提交变更说明,上生产环境需要专业的DBA审核,通过后方可上生产
删库跑路,从不规范开始
-
设计数据库表时,存在三个必须字段:主键、create_time、update_time
不加主键的表,不好做扩展;创建时间、修改时间等信息在绝大多数场景、以及问题排查下都需要用来做跟踪记录;不加就等着被打死吧!
-
在生产环境中,手动删除或更新数据时,请先进行备份
欢迎从删库到跑路的操作
-
SQL中注意Where关键字后面的字段数据类型发生隐式转换
有可能会导致索引失效
-
设计表时,尽量定义为NOT NULL
节省空间,底层(Compact)行格式会花费额外的空间去记录为NULL的所有列,没有则不记录;NULL列在计算和比较时,需要注意空指针问题
-
查询SQL时,尽量减少不必要的字段
请使用 select <具体字段> 避免使用 select * (全表扫描)
-
在删除或更新操作前,尽量由查询语句变换过来
select ... where ... ——————> delete/update ... where ...
-
尽量使用vachar 代替 char
节省空间,char定长类型存在极大浪费空间风险(char查询效率快,容量小,vachar效率慢,容量大;前者空间换时间,后者时间换空间)
-
生产环境中,变更数据时,注意使用事务
begin; + SQL; + commit;
-
索引命名规范:主键索引————pk_字段名;唯一索引————uk_字段名;普通索引————idx_字段名
pk_即primary key;uk_即unique key;idx_即index 的简称
-
WHERE后面的列,不进行函数或表达式的计算
避免索引失效