规则

来源:这里教程网 时间:2026-03-01 12:09:54 作者:

一、建表规则     1.表必须有create_time和update_time字段,并且这两列上都有索引      2.auto_increment 默认情况下为1开始      3. 默认字符集为utf8/utf8mb4,不需要指定表或者列的字符和校验规则         bad case : create table table_name          (name varchar(20) charaset utf8 collate utf8_general_ci not null default ‘’ comment ''              ) DEFAULT CHARSET=utf8          good case : create table table_name               (name varchar(20) not null default comment '')     4.表和列的注释要有表和列的作用,谁创建的,创建时间。 创建时间必须为当天时间,不要从沙盒导出来就复制到tb上。         例如:             create table table_name                 (name varchar(20) not null default ‘’ comment '名字|张三|20180613'                ) comment = '表是干什么的|谁创建的|当天的日期'      5.列必须明确指定为not null,不允许出现default null 的字样,看上面的例子。         1)NULL的列使用索引,索引统计,值都更加复杂,MySQL更难优化         2)NULL需要更多的存储空间         3)NULL只能采用IS NULL或者IS NOT NULL     6.必须有主键自增列最好用bigint类型            1)int有负号最高2147483647、无负号最高4294967295   , bigint 有负号9223372036854775807 无负号18446744073709551615           2)无主键的大表在row模式下做delete操作偶发从库会夯住     7.精确度要求高的要用decimal      8.字段类型的长度满足就好不要写的特长          bad case: name varchar(100)          good case:name varchar(10)      9.正常表的列个数不超过30      10.大字段列(text,blob)尽量单独建个表存放     11.禁止使用外键控制关系,由程序实现           影响性能,易造成瓶颈     12.建议使用TINYINT来代替ENUM          ENUM增加选项是要做ddl操作。     13.关键的业务环节,需要有单独的时间和描述字段,不能复用。 二、索引规则     1.单张表索引数量建议控制在5个以内         1)多了会造成数据库不能选择正确的索引     2.组合索引字段数不建议超过5个         1)如果太多索引失效     3.不要在频繁更新的字段上建立索引      4.联合索引最左前缀原则,避免重复建设索引 三、命名规则     1.用户名不得超过16个字符      2.表名列名要清晰,让人一看就明白      3.索引名字加个前缀idx_,唯一索引uniq_         idx_create_time, uniq_create_time     4.备份表的名字在表名后面加上日期和名字         goods_order---->goods_order_20180613_majianli 四、sql规则     1.禁止使用select * 需要哪些字段写哪些字段      2.JOIN关联查询时要确保关联条件的类型是一致的,并且两列都是有索引的   left join 的关系是N:1         join的关系是N:N      3.避免隐式类型转         phone varchar(20)         bad case : select name from tabe_name where phone = 1366666666;         good case : select name from tabe_name where phone = '1366666666';     4.不要在索引列做计算和加函数使用     5.禁止使用select * 查询         *会增加cpu、io、内存、带的消耗         如有覆盖索引*不会使用到     6.insert操作必须指定字段         表结构有变动时不会有影响     7.合理使用子查询,不要太相信网上传言MySQL的子查询不好。     8.学会看执行计划,不是走索引了就可以的。         这个很重要      9.一直都在说拒绝3B         big sql         big transation         big batch         及其复杂的sql放在对应功能的数据库上做运算      10.添加列索引等           添加多个列/索引 对应一个表时用一个alter语句           alter  table_name add name1 。。。。。。           alter  table_name add name2 。。。。。。           alter  table_name add name3 。。。。。。           改成:           alter  table_name add name1 。。。。,add name2 。。。。,add name3 。。。。; 四、其他规则     1.引擎使用innodb      2.字符使用utf8或者utf8mb4      3.禁止使用存储过程,视图,触发器等      4.不使用的rds自建数据库的,禁止使用yum安装mysql。要和线上版本一致。

相关推荐