数据库操作相关

mysql规范

2017-02-28  本文已影响125人  jey恒

命名规范

库名、表名、字段名必须使用小写字母,并采用下划线分割

库名、表名、字段名禁止超过32个字符,需见名知意

临时库、表名须以tmp加日期为后缀

按日期时间分表须符合_YYYY[MM][DD]格式

库表基础规范

使用Innodb存储引擎

表字符集统一使用UTF8

所有表都要添加注释

控制单表字段数量

所有表都必须要显式指定主键

避免使用存储过程、视图,禁止使用触发器、事件

单表数据量控制在5000w以内

字段规范

char、varchar、text等字符串类型定义

int、tinyint、decimal等数字类型定义

timestamp与date time, DATE选择

建议字段都定义为NOT NULL

同一意义的字段定义必须相同

索引规范

任何新的select,update,delete上线,都要先explain,看索引使用情况

explain解读

索引个数限制

避免冗余索引

索引尽量建在选择性高的列上

最左前缀原则

合理使用覆盖索引减少IO

尽量不要在频繁更新的列上创建索引

SQL设计

SELECT * 读取全部字段 [读什么取什么特别有大数据量的字段时候]

能确定返回结果只有一条时,使用 limit 1

禁止在where条件列上使用函数

使用like模糊匹配,%不要放首位

涉及到复杂sql时,务必先参考已有索引设计,先explain

使用join时,where条件尽量使用充分利用同一表上的索引

少用子查询,改用join

考虑使用union all,少使用union,注意考虑去重

IN的内容尽量不超过200个

拒绝大事务

避免使用is null, is not null这样的比较

order by .. limit

c1 < a order by c2

分页优化

count计数

delete,update语句改成select再explain

减少与数据库交互的次数,尽量采用批量SQL语句

上一篇下一篇

猜你喜欢

热点阅读