规范:SQL法则


  1. SQL编写完成后,应使用Explain查看一下执行计划

    时刻注意SQL质量,多观察是否走预定索引

  2. 在进行Delete或Update语句时,请思考添加Limit

    提高效率,避免长事务,避免CPU打满(数据量特大)

  3. 设计数据库表时,要注意一定要添加表字段、字段值说明(存在固定值时)、以及表名等对应的注释

    方便团队协作,以及更容易换人维护

  4. 变更SQL的操作,请先在开发/测试环境进行执行,没问题后,提交变更说明,上生产环境需要专业的DBA审核,通过后方可上生产

    删库跑路,从不规范开始

  5. 设计数据库表时,存在三个必须字段:主键、create_time、update_time

    不加主键的表,不好做扩展;创建时间、修改时间等信息在绝大多数场景、以及问题排查下都需要用来做跟踪记录;不加就等着被打死吧!

  6. 在生产环境中,手动删除或更新数据时,请先进行备份

    欢迎从删库到跑路的操作

  7. SQL中注意Where关键字后面的字段数据类型发生隐式转换

    有可能会导致索引失效

  8. 设计表时,尽量定义为NOT NULL

    节省空间,底层(Compact)行格式会花费额外的空间去记录为NULL的所有列,没有则不记录;NULL列在计算和比较时,需要注意空指针问题

  9. 查询SQL时,尽量减少不必要的字段

    请使用 select <具体字段> 避免使用 select * (全表扫描)

  10. 在删除或更新操作前,尽量由查询语句变换过来

    select ... where ... ——————> delete/update ... where ...

  11. 尽量使用vachar 代替 char

    节省空间,char定长类型存在极大浪费空间风险(char查询效率快,容量小,vachar效率慢,容量大;前者空间换时间,后者时间换空间)

  12. 生产环境中,变更数据时,注意使用事务

    begin; + SQL; + commit;

  13. 索引命名规范:主键索引————pk_字段名;唯一索引————uk_字段名;普通索引————idx_字段名

    pk_即primary key;uk_即unique key;idx_即index 的简称

  14. WHERE后面的列,不进行函数或表达式的计算

    避免索引失效