盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

详细说明在mysql查询时,offset过大影响性能的原因与优化办法

时间:2024/3/22作者:未知来源:盘绰网教程人气:


[摘要]+--------+1 row in set (0.09 sec)很明显,如果只查询主键,执行效率对比查询全部字段,有很大的提升。 推测只查询主键的情况 因为二级索引已经找到主键值,而查询只需要读...
+--------+1 row in set (0.09 sec)

很明显,如果只查询主键,执行效率对比查询全部字段,有很大的提升。

推测

只查询主键的情况
因为二级索引已经找到主键值,而查询只需要读取主键,因此mysql会先执行offset偏移操作,再根据后面的主键索引读取数据块。

需要查询所有字段的情况
因为二级索引只找到主键值,但其他字段的值需要读取数据块才能获取。因此mysql会先读出数据块内容,再执行offset偏移操作,最后丢弃前面需要跳过的数据,返回后面的数据。

证实

InnoDB中有buffer pool,存放最近访问过的数据页,包括数据页和索引页。

为了测试,先把mysql重启,重启后查看buffer pool的内容。

可以看到,重启后,没有访问过任何的数据页。

查询所有字段,再查看buffer pool的内容

mysql> select * from member where gender=1 limit 300000,1; +--------+------------+--------+

关键词:  详细说明在mysql查询时  offset过大影响性能的原因与优化办法





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版