MySql规则


库表命名规范
CHARSET=utf8mb4 COMMENT='表/字段注释必须写';
管理端库统一tl开头,要素抽取统一ex,如:tl_xxx,ex_xxxx
表名、字段名必须使用小写字母或数字,禁止使用数字开头,禁止两个下划线中间只出现数字。

字段规范
id 类型:int,长度:11,自增,`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id'
设置了自增id,创建表时需要添加AUTO_INCREMENT=0
VARCHAR类型,具体长度根据储存数据判断
状态值或类型值统一用tinyint类型(1表示是,0表是否),如果需要用字符串用VARCHAR(具体值感觉字符串判断)
备注字段统一字段名:remark,text类型,sql:`remark` TEXT DEFAULT NULL COMMENT '备注',
四要素统一命名:created_by,updated_by,created_time,updated_time;
created_by,updated_by 使用类型 int(11);
created_time,updated_time 使用类型 datetime
时间字段类型统一用datetime
基础数据相关的字典表命名统一用:dict_作为前缀
备用字段用命名用ext,多个后面直接加数字区分,如:ext1,ext2....
逻辑删除 字段名:is_del,int(2),1删除,0未删除
小数类型为decimal,禁止使用float和double
varchar为可变长字符串,如果存储长度过大,应定义字段类型为text类型,且独立出以id为关联的表出来,避免其他数据的查询。

索引规范
唯一键约束命名:以uniq_ 为前缀
一般性约束: 以idx_ 为前缀
3张表关联查询禁止使用join。join的字段数据类型需要一致,关联查询的字段需要有索引。
如果索引是varchar类型时,需要指定索引长度,根据实际文本区分度决定索引长度
SQL性能优化的目标:range<ref<ref_or_null<consts,最低级别要求range;通过explaint + sql语句,查看type字段,来判断是否走了索引
consts 只匹配一个,主键索引/唯一索引
ref 使用普通的索引
ref_or_null 普通索引搞了个IS NULL/IS NOT NULL
range 对普通索引进行范围检索。
建组合索引规则,最左原则。
索引避免泛滥:查询条件就需要一个索引,导致updaet和行的add速度

操作时规范
count(列名)或count(常量)来代替count(*).如统计所有数据用count(1)来代替count(1)
如果字段值都为null的时候,用sum注意npe问题会返回null导致数据类型错误问题,可以用select IFNULL(SUM(字段名), 0) from 表名,return:0
禁止使用存储过程
delete和update 先select 再修改避免误操作
in 不能不用就不用,会影响索引检索
selete 不能用*代理字段列表,只查询有使用到的字段,减少解析资源
boolean类型bean前缀不能加is,数据库字段必须以is_开始
update数据时,需要同步更新修改人和修改时间(当前时间)

posted @ 2023-01-17 14:00  C疯仔  阅读(10)  评论(0)    收藏  举报