一、建表规则 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。要和线上版本一致。
规则
来源:这里教程网
时间:2026-03-01 12:09:54
作者:
编辑推荐:
- 规则03-01
- MySQL 处理重复数据03-01
- Install MySQL 5.7 in the Docker03-01
- Linux使用源码来安装MySQL 5.703-01
- 自制小工具大大加速MySQL SQL语句优化(附源码)03-01
- windows 7 vs 2013编译与安装MySQL 5.703-01
- 3DMAX创建一个逼真的汽车渲染教程03-01
- 20万DBA都在关注的11个问题03-01
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 自制小工具大大加速MySQL SQL语句优化(附源码)
自制小工具大大加速MySQL SQL语句优化(附源码)
26-03-01 - 3DMAX创建一个逼真的汽车渲染教程
3DMAX创建一个逼真的汽车渲染教程
26-03-01 - 20万DBA都在关注的11个问题
20万DBA都在关注的11个问题
26-03-01 - CentOS监控指标收集全攻略(手把手教你搭建Linux服务器性能监控体系)
- 3DMAX制作仙灵岛动漫场景过程赏析
3DMAX制作仙灵岛动漫场景过程赏析
26-03-01 - MySQL MVCC介绍
MySQL MVCC介绍
26-03-01 - Redis专题(2):Redis数据结构底层探秘
Redis专题(2):Redis数据结构底层探秘
26-03-01 - 3dsMAX制作火离妖游戏模型过程
3dsMAX制作火离妖游戏模型过程
26-03-01 - 3dmax制作欧式风格的墙壁路灯效果
3dmax制作欧式风格的墙壁路灯效果
26-03-01 - 3dMax结合zbrush制作超酷的霸王丸教程
3dMax结合zbrush制作超酷的霸王丸教程
26-03-01
