mysql怎么维护索引 mysql索引实现原理( 九 )


crc32 是整形,在MySQL中,给整形字段建立索引效率比较高,crc32虽然不能确保唯一性,但是无碍,相同的机率也是极小 , 关键是可以大大减少查询的范围,给crcurl这个字段建立索引 , 查询的时候带上crcurl字段就可以利用到索引 。
不允许翻过100页(百度搜索一般到70页左右)
首先我们直接大数据分页limit 5000000,10发现耗时4.41秒
接下来我们转换方式使用where条件查询,只耗时0.02秒
2次的查询结果不一致,这是因为数据被物理删除过有空洞.,因此我们可以追加软删除功能
分析:优化思路是 不查,少查,查索引,少取.
我们现在必须要查,则只查索引,不查数据,得到id.
再用id去查具体条目.这种技巧就是延迟索引.
分析:limit是先查询再越过,也就是说我们先查询出所有数据再进行跳跃,上图我们越过500W页 , 还使用了inner join内存并没有崩掉 , 这是因为我们子句tmp临时表中只查询了id(索引覆盖,不需要回行去磁盘找数据了)然后拿到这10个id 分别查询这10条数据。
排序可能发生2种情况:
1:对于覆盖索引,直接在索引上查询时,就是有顺序的, using index
2:先取出数据,形成临时表做filesort(文件排序,但文件可能在磁盘上,也可能在内存中)
我们的争取目标:取出来的数据本身就是有序的! 利用索引来排序,那么什么时候发生索引排序呢?即查询索引和order by的字段是同一个字段
goods表中 cat_id与shop_price组成联合索引:
select goods_id,cat_id,shop_price from goods where cat_id=4 order by shop_price;可以直接利用索引来排序,
using where按照shop_price索引取出的结果,本身就是有序的
select goods_id,cat_id,shop_price from goods order by click_count;
using filesort用到了文件排序,即取出的结果再次排序
重复索引是指 在同1个列(如age), 或者顺序相同的几个列(age,school), 建立了多个索引,称为重复索引,重复索引没有任何帮助,只会增大索引文件,拖慢更新速度 。
冗余索引是指2个索引所覆盖的列有重叠, 称为冗余索引 。比如x,m,列,加索引 index x(x),index xm(x,m) x,xm索引, 两者的x列重叠了,这种情况,称为冗余索引. (mx, xm 不是重复的,因为列的顺序不一样)
mysql怎么维护索引的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于mysql索引实现原理、mysql怎么维护索引的信息别忘了在本站进行查找喔 。

推荐阅读