大家好,我是安小生,下面我们讲解一下MySQL的索引与结构。
分页优化。
- 可以通过子查询,
select * from article where id >= (select id from article limit 999999,1) limit 10;
- 2,先查询id,在查询数据
select id from article limit 99999,10;
select * from article where id in ();
- 3,先加索引在查询
alert table 表 add index idx_title_url_author(titme,url,author);
select title,url,author from article where id >=(select id from article limit 99999,1) limit 10;
以上是一个数据量比较大的一个分页优化方案。
innodb是如何储存我们的数据的?
-
innodb由多个段空间组成。
看下面的图吧。 总结图.png
1.1 叶子段:索引b+tree信息。
1.2 非叶子段:索引b+tree的信息。
1.3 回滚段:回滚的数据
1.4 索引段:总的索引位置记录
空间段
一个区中64个也,不满足就会重新申请一个空间,一个区大概是1mb,一段空间由多个组成。而一个空间有16KB
行空间数据的长度大小,实际的表数据,文件信息等。
什么是索引
索引是数据相关优化的重要手段,主要是单表的情况下,索引不是万能的,不要误会使用的一定可以优化,跟优化的效果好。
MySQL中的所有类型:bterr索引,hash索引,fulltext(全文索引)一般会使用es分布式搜索引擎代替,R-tree索引。
- 索引类型:
主键索引:就是我们的自增id主键。
唯一索引:一个唯一字段建立的索引。
单索引:单个字段简历的索引。
联合索引:多个字段联合创建的索引,
全文索引:列如:你今天去干什么了。会拆分:你,今天,去,干什么了。针对中文进行分词的搜索。
覆盖索引:是所有查询sql🔐追求的索引效率完美的使用,
后面我们会详细的出一个索引文章。
B+TREE结构。
- btree结构:二叉树,二分算法。
二分法:会不断的选择一个元素作为中数,比较左边的元素小于中位数,右边的大于中位数。
如图:
二叉树的结构.png
-
b+tree 根据平衡树来的。
b+tree结构.png
数据不存在非叶子节点,所有的数据是存在叶子节点,根据数据的情况进行数据计算会尽量的均衡分配,不同的页中。
基本的浮动范围=》浮动值=》根据最大和最小创建不同的页。
网友评论