• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql高效分页详解

    前言

    通常针对MySQL大数据量的查询采取“分页”策略,但是如果翻页到比较靠后的位置时查询将变得很慢,因为mysql将花费大量的时间来扫描需要丢弃的数据。

    基本分页技巧

    通常情况下,为了实现高效分页,需要在查询中WHERE条件列和排序列应用组合索引。
    例如,建立索引(a,b,c)使得以下查询可以使用索引,提高查询效率:

    1、字段排序

    ORDER BY a 
    ORDER BY a,b
    ORDER BY a, b, c 
    ORDER BY a DESC, b DESC, c DESC 
    

    2、筛选和排序

    WHERE 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、下面查询是无法使用以上索引的

    ORDER 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来做条件筛选,再配合降序和升序获得上/下一页的结果集 。
    2、限制用户翻页数量
    产品实际使用过程中用户很少关心搜索结果的第1万条数据。
    3、使用延迟关联
    通过使用覆盖索引来查询返回需要的主键,再根据返回的主键关联原表获得需要的行,这样可以减少Mysql扫描那些需要丢弃的行数。

    实例:
    使用索引(sex,rating)进行查询:

    mysql> SELECT cols> FROM profiles INNER JOIN (
    -> SELECT primary key cols> FROM profiles
    -> WHERE x.sex='M' ORDER BY rating LIMIT 100000, 10
    -> ) AS x USING(primary key cols>);
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • mysql分页原理和高效率的mysql分页查询语句
    • MySQL 百万级分页优化(Mysql千万级快速分页)
    • mysql limit分页优化方法分享
    • oracle,mysql,SqlServer三种数据库的分页查询的实例
    • php+mysql分页代码详解
    • mysql+php分页类(已测)
    • mysql 分页优化解析
    • Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架
    • php下巧用select语句实现mysql分页查询
    • Mysql中分页查询的两个解决方法比较
    上一篇:Mysql 5.7.17安装后登录mysql的教程
    下一篇:mysql 5.7.17 winx64免安装版配置方法图文教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql高效分页详解 Mysql,高效,分页,详解,Mysql,