加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql高效分页的方法

发布时间:2022-09-21 14:59:37 所属栏目:MySql教程 来源:
导读:  Mysql高效分页的方法

  大家知道Mysql高效分页吗?下面我们就给大家详细介绍一下吧!通常针对MySQL大数据量的查询采取“分页”策略,但是如果翻页到比较靠后的位置时查询将变得很慢,因为mysql将花
  Mysql高效分页的方法
 
  大家知道Mysql高效分页吗?下面我们就给大家详细介绍一下吧!通常针对MySQL大数据量的查询采取“分页”策略,但是如果翻页到比较靠后的位置时查询将变得很慢,因为mysql将花费大量的时间来扫描需要丢弃的数据。
 
  基本分页技巧
 
  通常情况下,为了实现高效分页,需要在查询中WHERE条件列和排序列应用组合索引。
 
  例如,建立索引(a,b,c)使得以下查询可以使用索引,提高查询效率:
 
  1、字段排序
 
  4ORDER BY a ORDER BY a,bORDER BY a, b, c ORDER BY a DESC, b DESC, c DESC
 
  2、筛选和排序
 
  4WHERE a = const ORDER BY b, c WHERE a = const AND b = const ORDER BY c WHERE a = const ORDER BY b, c WHERE a = const AND b > const ORDER BY b, c
 
  3、下面查询是无法使用以上索引的
 
  4ORDER BY a ASC, b DESC, c DESC//排序方向不一致WHERE g = const ORDER BY b, c // 字段g不是索引一部分WHERE a = const ORDER BY c //没有使用字段b WHERE a = const ORDER BY a, d // 字段d不是索引的一部分
 
  解决大数据量翻页问题
 
  1、将LIMIT M,N的查询改为LIMIT N
 
  例如,使用LIMIT 10000,20,Mysql将需要读取前10000行,然后获取后面的20行 ,这是非常低效的,使用LIMIT N的方式,通过每页第一条或最后一条记录的id来做条件筛选mysql分页,再配合降序和升序获得上/下一页的结果集 。
 
  2、限制用户翻页数量
 
  产品实际使用过程中用户很少关心搜索结果的第1万条数据。
 
  3、使用延迟关联
 
  通过使用覆盖索引来查询返回需要的主键,再根据返回的主键关联原表获得需要的行,这样可以减少Mysql扫描那些需要丢弃的行数。
 
  实例:
 
  使用索引(sex,rating)进行查询:
 
  4mysql> SELECTFROM profiles INNER JOIN (-> SELECTFROM profiles-> WHERE x.sex='M' ORDER BY rating LIMIT 100000, 10-> ) AS x USING();
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!