索引的构成
b+树
最左原则
https://www.cnblogs.com/-mrl/p/13230006.html
回表
为什么分页查询会越来越慢
索引是个什么东西?
索引是关系型数据库中独立的,物理的对数据库中的表中的一列或者多列进行排序的数据结构,是数据表中的一列或者多列的数据的集合,索引就像是书的目录,可以根据目录能够快速查询到相关的数据
我们可以创建哪些索引?
普通索引
主键索引
复合索引
哪些字段适合建立索引呢?
需要经常where的字段
需要join的连表字段
需要排序的字段
需要groupby的字段
索引是不是越多越好呢?
索引是真实存在的数据,过多的创建索引会导致数据量增加
索引是一颗平衡树,在数据更新的时候,索引页会频繁的进行页分裂和合并,非常耗时
为什么我们不建议使用uuid、身份证号等数据做为主键?
当我们使用自增主键的时候,叶子节点的链表会根据当前节点的最后一个位置,将最新的最新的一条数据顺序的插入到最后一个位置后面就可以了
但是当使用UUID的时候,mysql不知道这个数据要查入到哪里,所以只能从头查找要插入的位置进行插入,当这个插入的页已经满了的时候,又要重新进行分裂和合并,极大的影响了效率
为什么不建议使用select * from table?
这样查会进行回表,增加数据库的查询压力和查询时间