国内最专业的IT技术学习网

Mysql数据库

当前位置:主页 > Mysql数据库 >

银河官网:MySQL如何优化大分页查询?

发布时间:2019/09/11标签:   mysql      数据库      大分页查询    点击量:

原标题:银河官网:MySQL如何优化大分页查询?

t 表是一个索引组织表,key idxkidtype(kid,type) 。

SELECT * FROM tablewhere kid=1342 and type=1 order id asc limit 149420 ,20; 

MySQL如何优化大分页查询?

数据库管理工具,你选对了吗?

鉴于上面的大分页查询耗费时间长的原因,我们思考一个问题,是否需要完全遍历“无效的数据”?如果我们需要limit 8,2;我们跳过前面8行无关的数据页遍历,可以直接通过索引定位到第9,第10行,这样操作是不是更快了?依然是一图胜千言,通过这其实也是 延迟关联的 核心思思:通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据,而不是通过二级索引获取主键再通过主键去遍历数据页。

其次 根据id 大于最小值或者小于最大值 进行遍历。

2 优化SQL 访问数据的方式,直接快速定位到要访问的数据行。

执行时间:

3.1 延迟关联

SELECT a.id as id, clientid, adminid, kdtid, type, token, createdtime, updatetime, isvalid, version FROM t1 a, (SELECT id FROM t1 WHERE 1 and client_id = 'xxx' and is_valid= '1' order by kdt_id asc limit 267100,100 ) b WHERE a.id = b.id; 

一 背景

大部分开发和DBA同行都对分页查询非常非常了解,看帖子翻页需要分页查询,搜索商品也需要分页查询。那么问题来了,遇到上千万或者上亿的数据量怎么快速的拉取全量,比如大商家拉取每月千万级别的订单数量到自己独立的ISV做财务统计;或者拥有百万千万粉丝的公众大号,给全部粉丝推送消息的场景。本文讲讲个人的优化分页查询的经验,抛砖引玉。

MySQL 如何优化大分页查询?

优化后:

一文看懂/MySQL数据库LnnoDB崩溃恢复机制

使用延迟关联查询数据510ms ,使用基于书签模式的解决方法减少到10ms以内 绝对是一个质的飞跃。

MySQL单表数据不要超过500万行:是经验数值,还是黄金铁律?

该SQL是一个非常典型的排序+分页查询:

order by col limit N,M 

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号