总结阿里专家mysql讲解笔记
程序员文章站
2022-03-11 17:35:59
文章目录观点观点数据库mysql底层是由B+树构成,是平衡树树高=主键+所有列长度(主键在分支节点上 16kb,所以varchar 20 就满了,所以varchar作为主键类型是不妥的)其次树高决定数据查询的快慢,所以说尽量树高比较矮会好些依据上面的树高结论,我们可以知道如果表列很多的话,可以分到多张表,让树高矮一点。分支因子能储存更多的话,越能省内存。所以在设计索引的时候,要注意索引类型设计自增主键避免拆开树,so主键一般是顺序的。主键是为了构造这棵树。这个有个问题:业务尽量不要用主键去关...
文章目录
观点
- 数据库mysql底层是由B+树构成,是平衡树
- 树高=主键+所有列长度(主键在分支节点上 16kb,所以varchar 20 就满了,所以varchar作为主键类型是不妥的)
- 其次树高决定数据查询的快慢,所以说尽量树高比较矮会好些
- 依据上面的树高结论,我们可以知道如果表列很多的话,可以分到多张表,让树高矮一点。
- 分支因子能储存更多的话,越能省内存。所以在设计索引的时候,要注意索引类型设计
- 自增主键避免拆开树,so主键一般是顺序的。主键是为了构造这棵树。这个有个问题:业务尽量不要用主键去关联,这是为啥?虽然主键查询很快,但是像select * from xx 他就不一定是使用主键去查询的,而是查询最短索引,也就是索引结构更短。
- 索引加上查询字段,避免回表,空间换时间。但是这个查询字段不能经常修改,不然也会掰断二叉树的分支节点。
- 锁一般加主键和索引上。
- 索引可以避免order by进行排序,比如where a = x and b = x and c = x order by c,只有a,b是常量的时候,我们可以不用写order by c如果我们建a,b,c为索引的话。
- 索引建立原则:区分度高。像性别这种区分度不高的,会让mysql在查询的时候区别不大。
- sql如果有大于等于号,要先写等于号,再写大于号。就一定会用上索引。然后字段经常改的,要放在后面。
- 索引不要使用hash类型,这个只使用等值的情况,如果大于小于等等不能用到的。
本文地址:https://blog.csdn.net/weixin_38336658/article/details/107670706