mysqllimit分页优化方法分享
方法 优化 分享 分页 mysqllimit
2023-06-13 09:14:28 时间
同样是取10条数据
select*fromyanxue8_visitlimit10000,10和
select*fromyanxue8_visitlimit0,10
就不是一个数量级别的。
网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用。今天发现一篇文章写了些关于limit优化的,很不错。
文中不是直接使用limit,而是首先获取到offset的id然后直接使用limitsize来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。(测试环境win2033+p4双核(3GHZ)+4G内存MySQL5.0.19)
1、offset比较小的时候。
select*fromyanxue8_visitlimit10,10
多次运行,时间保持在0.0004-0.0005之间
Select*Fromyanxue8_visitWherevid>=(
SelectvidFromyanxue8_visitOrderByvidlimit10,1
)limit10
多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。
select*fromyanxue8_visitlimit10000,10
多次运行,时间保持在0.0187左右
Select*Fromyanxue8_visitWherevid>=(
SelectvidFromyanxue8_visitOrderByvidlimit10000,1
)limit10
多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。
以后要注意改正自己的limit语句,优化一下MySQL了
推荐人评论
MySQL的优化是非常重要的。其他最常用也最需要优化的就是limit。MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。
select*fromyanxue8_visitlimit10000,10和
select*fromyanxue8_visitlimit0,10
就不是一个数量级别的。
网上也很多关于limit的五条优化准则,都是翻译自MySQL手册,虽然正确但不实用。今天发现一篇文章写了些关于limit优化的,很不错。
文中不是直接使用limit,而是首先获取到offset的id然后直接使用limitsize来获取数据。根据他的数据,明显要好于直接使用limit。这里我具体使用数据分两种情况进行测试。(测试环境win2033+p4双核(3GHZ)+4G内存MySQL5.0.19)
1、offset比较小的时候。
select*fromyanxue8_visitlimit10,10
多次运行,时间保持在0.0004-0.0005之间
Select*Fromyanxue8_visitWherevid>=(
SelectvidFromyanxue8_visitOrderByvidlimit10,1
)limit10
多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。
2、offset大的时候。
select*fromyanxue8_visitlimit10000,10
多次运行,时间保持在0.0187左右
Select*Fromyanxue8_visitWherevid>=(
SelectvidFromyanxue8_visitOrderByvidlimit10000,1
)limit10
多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。
以后要注意改正自己的limit语句,优化一下MySQL了
推荐人评论
MySQL的优化是非常重要的。其他最常用也最需要优化的就是limit。MySQL的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。
相关文章
- vue中时间戳转日期格式化的方法(一看就会)「建议收藏」
- 华盛顿大学 | 模型优化新方法!以任务向量为中心,编辑模型生成预期效果(含源码)
- 技术组件优化分析:原理、方法与实战分享
- 优化SQL Server内存占用的有效方法(sqlserver内存占用)
- Oracle 等待事件 Redo Writer Remote Sync Notify 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 sbtgetbuf 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 WCR: replay paused 官方解释,作用,如何使用及优化方法
- Oracle 等待事件 Enqueues:WL,BeingWrittenRedoLog 官方解释,作用,如何使用及优化方法
- Java Set.contains()方法:判断Set集合是否包含指定的对象
- MySQL视图优化技巧:提高性能的有效方法(mysql视图优化)
- Linux优化:提升系统性能的简单方法(linux性能优化)
- Oracle用户复制:快速安全的方法(oracle复制用户)
- 搜索优化技巧:MongoDB模糊查询的实现方法(mongodb模糊)
- Linux下优化进程启动时间的方法(linux进程启动时间)
- 快来看!Oracle客户端修复方法释放,轻松解决问题(oracle客户端修复)
- MSSQL轮训:一种优化CPU使用的方法(mssql轮训cpu)
- MySQL优化实用技巧分享如何让MySQL数据库更快更稳定(mysql中优化方法)
- MySQL join操作的优化方法(MySQL中join优化)
- Oracle 12c中简单快捷的表删除方法(oracle12c删除表)
- 使用Limit参数优化MySQL查询的方法
- 用扩展方法优化多条件查询(不定条件查询)
- 关于C#程序优化的五十种方法
- 优化Mysql数据库的8个方法
- web.config配置连接字符串的方法
- Oracle监听器服务不能启动的解决方法