sql规范
来源:互联网 发布:小米盒子软件大全 编辑:程序博客网 时间:2024/06/05 07:23
命名规范
- 库名、表名、字段名必须使用小写字母,并采用下划线分割
- 库名、表名、字段名禁止超过32个字符(如必须超过请给出理由),须见名之意
- 库名、表名、字段名禁止使用MySQL保留字
- 临时库、表名必须以tmp为前缀,并以日期为后缀
- 备份库、表必须以bak为前缀,并以日期为后缀
基础规范
- 使用INNODB存储引擎
- 表字符集使用UTF8
- 数据表和关键字段需要添加注释
- 单表数据量建议控制在5000W以内
- 不在数据库中存储图片、文件等大数据(如确实需要请发起评审)
库表设计
- 拆分大字段和访问频率低的字段,分离冷热数据
- 当有分库、分表需求时,具体方案需先发起评审
字段设计
- 按需选择数值类型,例如使用BIGINT存储品牌id明显是不合理的
- 不使用TEXT、BLOB类型,除非给出明确的理由
- 不使用FLOAT和DOUBLE存储需要精确计算的浮点数,可使用DECIMAL或INT代替。
- 使用TINYINT来代替ENUM类型
- 时间使用TIMESTAMP类型(不要使用DATETIME)
索引规范
- 主键规则
- 表必须有主键
- 不使用更新频繁的列
- 尽量不选择字符串列
- 不使用UUID MD5 HASH
- 默认使用非空的唯一键
- 重要的SQL必须被索引
- UPDATE、DELETE语句的WHERE条件列
- ORDER BY、GROUP BY、DISTINCT的字段
- 多表JOIN的字段
- 核心SQL优先考虑覆盖索引(http://blog.chinaunix.net/uid-24111901-id-2627880.html)
- 索引不是越多越好,单张表中索引数量不超过5个,单个索引中的字段数不超过5个
- 对字符串使用前缀索引,在保证较高选择性的前提下应尽可能短
- 对于联合索引,选择性最大的字段放在前面
- 不在索引列进行数学运算和函数运算
SQL设计
- 使用预编译语句,防止SQL注入攻击
- 避免使用外键、存储过程、触发器等,这些应交给应用来做,利于水平扩展
- 尽量避免大表的JOIN,可考虑通过数据冗余或应用缓存的方式解决
- 数据库异常不要在model层捕获,而是抛给controller层根据业务需求进行不同处理
禁忌
- 禁止在数据库中存放明文密码
- 避免select非必要字段,节省CPU和带宽开销
- UPDATE、DELETE语句不使用LIMIT
0 0
- SQL规范
- SQL规范
- SQL 规范
- sql规范
- SQL规范
- SQL编程规范
- SQL书写规范
- Transact-SQL编程规范
- SQL编写规范
- SQL编码规范(收集)
- SQL编码规范(收集)
- SQL编码规范
- MS SQL 事务处理规范
- pl/sql定义规范~
- 一些SQL 脚本规范
- SQL 编程规范
- SQL编程规范
- SQL编程规范
- Windows下编译测试BM3D算法效果
- 将ffmpeg移植到Android
- 水果公司
- 如何加快c++的cout流的输出速度
- redis (Window下安装)
- sql规范
- 根据经纬度计算地图上两点的距离
- ES6中class原理,static属性方法,__proto__与prototype深入分析
- alignSelf
- fastjson中$ref对象重复引用问题解决方法
- 调试Devc++
- 接受一个日期的构造函数
- OpenXML SDK 读取WORD文档中的内容控件
- mysql 实现主从双向同步