三大范式
1.第一范式:数据库表的所有字段不可再拆分
2.第二范式:在第一范式的基础上,满足所有的非主属性必须依赖主键
3.第三范式:在第二范式的基础上,满足所有的非主属性不能互相依赖
反范式
为了提升性能,通常需要打破三大范式,这就是反范式
1.slot槽提升更新性能
2.字段冗余提升查询性能
数据类型
1.整型:tinyint, smallint, middiumint, int, bigint
2.小数类型:float, doouble, decimal
3.字符串:char, varchar, text, longtext, blob, longblob, enum
4.时间:datetime, timestamp
树
1.二叉树
只有两路,极端情况下可能会变成一条直线
2.平衡二叉树
左右子树的高度差绝对值不超过1
3.多路平衡二叉树
降低树的深度,提升性能
4.B+树
只有叶子节点存储数据,每个节点之间用指针连接,mysql的B+树做了优化,叶子节点由双向链表构成
5.B*树
非叶子节点的索引之间也有指针连接
mysql为什么使用B+树
只有叶子节点存储数据,并且是连续的,方便范围查找,减少IO次数