--数据库 字段 表 命名规范
使用小写字母或数字 下划线
禁止使用数字开头
不使用复数名词
禁止保留字
是否概念字段,必须使用is_xxx的方式
##数据类型##
小数应该选择decimal
货币bigint
单个字段长度相等使用char
varchar最长不超过5000
--建表必须三个字段
Id create_time update_time
单表行数超过500w或者大小超过2gb,才推荐分库分表
----索引
特性,持久性--存储空间大,有序性
分类
存储形式 1,聚簇索引 2,非聚簇索引
数据约束:1,主键索引,2唯一索引 3,非唯一索引
索引列的数量,1,单列索引,组合索引
innoDB可以创建的索引:主键索引,唯一索引,普通索引
不可以创建的索引,覆盖索引
索引的数据结构 btree
--索引规约
1,有唯一特性的字段必须创建成唯一索引
2,在varchar字段创建索引时必须指定索引长度(长度比较低时可以不用指定)
3,建组合索引的时候,区分度最高的在最左边
--索引注意
1,注意字段类型,防止字段不同造成隐式转换,导致索引失效
2,利用覆盖索引
3,利用有序性,使用order by的场景 使用索引
4,禁止模糊查询,模糊查询左有%时 索引失效
减少表之间的join (建议不超过3个)
SQL规约
1,使用count(*) 查询行数
2,count(distinct col)计算不重复的行数
3,使用 isnull 判断null 凡是null参与的计算都是null
4,当深翻页时,可以加上某个限定条件 优化SQL
ORM映射规约
1.不使用select *
2.pojo属性不能加 is 而数据库必须加
3.返回结果都要使用resultMap映射
4.不用${}
5.不用mybatis自带的queryList
6.不适用HashMap Hashtable
7.更新数据库时必须更新 update_time
8.不要写一个大而全的数据更新接口
数据库三范式
1.每列属性不可拆分
2.每列都与主键相关
3.每列都与主键直接相关而不是间接相关