Mysql使用limit深度分页优化 mysql使用select * limit offset, rows分页在深度分页的情况下 。性能急剧下降 。
limit用于数据的分页查询,当然也会用于数据的截取 , 下面是limit的用法:
1. 模仿百度、谷歌方案(前端业务控制)
类似于分段 。我们给每次只能翻100页、超过一百页的需要重新加载后面的100页 。这样就解决了每次加载数量数据大 速度慢的问题了
2. 记录每次取出的最大id,然后where id最大id
select * from table_name Where id最大id limit 10000, 10;
这种方法适用于:除了主键ID等离散型字段外,也适用连续型字段datetime等
最大id由前端分页pageNum和pageIndex计算出来 。
3. IN获取id
4. join方式覆盖索引(推荐)
如果对于有where 条件,又想走索引用limit的 , 必须设计一个索引,将where 放第一位,limit用到的主键放第2位 , 而且只能select 主键!
1. jdbcpagingReader使用方式
2. db索引分区器使用方式
入参1: 表名 如test_table
入参2: 排序索引字段 可以是主键 , 也可以是其他索引 。需要保证是唯一索引即可 。如:id
入参3: 主键可手动传入,也可以根据表名计算出来:现在只支持单列主键的 。如:id
入参4:具体表 要分多少块 。如:4
mysql 数据量大的表如何做分页查询直接用limit start, count分页语句,也是我程序中用的方法:
select * from product limit start, count
当起始页较小时 , 查询没有性能问题,我们分别看下从10, 100,1000, 10000开始分页的执行时间(每页取20条),如下:
select * from product limit 10, 200.016秒
select * from product limit 100, 200.016秒
select * from product limit 1000, 200.047秒
select * from product limit 10000, 200.094秒
我们已经看出随着起始记录的增加 , 时间也随着增大 , 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右)select * from product limit 400000, 203.229秒
再看我们取最后一页记录的时间
select * from product limit 866613, 2037.44秒
难怪搜索引擎抓取我们页面的时候经常会报超时,像这种分页最大的页码页显然这种时
间是无法忍受的 。
从中我们也能总结出两件事情:
1)limit语句的查询时间与起始记录的位置成正比
2)mysql的limit语句是很方便,但是对记录很多的表并不适合直接使用 。
mysql使用limit分页优化方案准备数据是20000000条数据
在分页场景下,使用limit start end,我们分别看下从10000,100000, 1000000开始分页的执行时间(每页取10条),如下图
当start较小时 , 查询没有性能问题,但是如上图查询时间所示,随着start增大,查询消耗时间也在递增,在start=10000000时,分页竟然消耗了2秒多,这是不能忍受的 。
由此引出对limit分页的优化,首先来explain该语句,看到查询没有使用到任何的索引 , 进行的是全表扫描,假如limit分页用到了索引是不是会快很多呢!
explain分析一下,第一行是select * from user_innodb形成的临时表使用的是全表扫描 , 第二行是 (SELECT id FROM user_innodb LIMIT 10000000, 10)形成的,使用的是eq_ref,第三行是全表扫描a和bjoin形成的派生表,使用到的是index,所以速度也会快很多
【mysql分页性能怎么用 mysql分页有什么优化】关于mysql分页性能怎么用和mysql分页有什么优化的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- javascript聊天记录,jspp聊天
- 腾讯推什么平台直播,腾讯有什么直播平台
- 正规的环化电商口碑如何,环华集团有限公司
- 网络直播间卖货怎么样赚钱,网络直播间卖货怎么样赚钱的
- python显示函数图形的简单介绍
- 做相片视频用什么软件,做相片视频用什么软件比较好
- sap供应商信息查询的简单介绍
- 网络营销如何融合电话营销,互联网电话营销
- python函数嵌套括号 python函数嵌套定义和嵌套调用