MySQL使用规范

1、    表设计类数据库

强制类规范函数

    1. 建立表的存储引擎必须是InnoDB。设计

    2. 每一个表必须显式的指定一个主键。日志

    3. 不容许使用联合主键。对象

    4. 不容许使用外键。排序

    5. 不容许存在和主键重复的索引。索引

    6. 自增加字段必须是主键或惟一索引。图片

    7. 不容许在数据库中存储诸如图片,影像之类的二进制数据。it

    8. 不容许使用TEXT类型字段table

    9. 建表时不容许显式的指定除了utf8以外的其余字符集。

    10. 对于全部声明为NOT NULL的字段,必须显式指定默认值。

11. 必须包含时间戳字段DataChange_LastTime,定义默认值为CURRENT_TIMESTAMP和on update CURRENT_TIMESTAMP,并添加索引。

12.不要使用系统或者常见的名称做为表名 如order

 

建议类规范

    1. 建议使用自增加字段做为主键。

    2. 对较长的字符类型,若是须要索引,则创建前缀索引。

    3. 不建议在数据库存放日志。

    4. 建议将字段都定义为not null。

    5. 选用能知足需求的最小类型。

    6. 避免使用保留字命名DB对象。

    7. 对表和字段都添加备注说明。

 

2、    SQL类

强制类规范

    1. 禁止使用子查询。

    2. 禁止使用select *,必须指定须要的字段。

    3. update/delete只能单表操做,不容许多表关联,不容许用子查询,且必定要带where条件。

    4. insert语句要显式指定插入的列名,且不容许使用insert .... select的形式。

    5. 不容许使用存储过程、存储函数、触发器和视图。

    6. 单条查询语句中,不容许出现多于一次的join。

    7. 不要在where后的筛选字段上作运算。

 

建议类规范

    1. 尽可能不要在数据库里作运算。

    2. 尽可能不要作‘%’前缀模糊查询,如 like '%name'。

    3. 不要使用大偏移量的limit分页。

    4. 链接MySQL不要设置成autocommit=0。

    5. 批量insert语句最好采用bulk insert的方法,如insert into table(xxx) values (xxx),(xxx)。

    6. update/delete尽可能根据主键进行操做。

    7.  尽可能减小count()的使用,尤为是用来频繁获取全表记录数。

    8. 使用group by时,如无排序的需求,建议加order by null。

    9.  Join中使用的关联字段使用统一数据类型。

相关文章
相关标签/搜索