Mysql百万级分页优化技巧

 更新时间:2016年12月28日 08:41:23   投稿:mrr  
这篇文章主要介绍了Mysql百万级分页优化技巧,包括普通分页和优化分页两种,在数据量比较大的时候,我们尽量去利用索引来优化语句。下面通过本文给大家详细讲解,一起看看吧

普通分页

   数据分页在网页中十分多见,分页一般都是limit start,offset,然后根据页码page计算start

select * from user limit 1,20

   这种分页在几十万的时候分页效率就会比较低了,MySQL需要从头开始一直往后计算,这样大大影响效率

SELECT * from user limit 100001,20; //time 0.151s
explain SELECT * from user limit 100001,20;

  我们可以用explain分析下语句,没有用到任何索引,MySQL执行的行数是16W+,于是我们可以想用到索引去实现分页

   优化分页

   使用主键索引来优化数据分页

select * from user where id>(select id from user where id>=100000 limit 1) limit 20; //time 0.003s

  使用explain分析语句,MySQL这次扫描的行数是8W+,时间也大大缩短。

 explain select * from user where id>(select id from user where id>=100000 limit 1) limit 20; 

     总结

  在数据量比较大的时候,我们尽量去利用索引来优化语句。上面的优化方法如果id不是主键索引,查询效率比第一种还要低点。我们可以先使用explain来分析语句,查看语句的执行顺序和执行性能。

补充:mysql中百万级别分页查询性能优化

前提条件:

1.表的唯一索引

2.百万级数据

SQL语句:

select
     c.*
     FROM
  (
  SELECT
   a.logid
  FROM
   tableA a
  where 1 = 1
     <#if phone?exists&& phone!=""> 
      AND a.phone like "%":phone"%" 
     </#if>
   ORDER BY
    a.create_time DESC
   limit :startIndex,:maxCount
  ) b,tableA c
  where 1 = 1 AND b.logid = c.logid

其中:

1:startIndex:表示查找数据的开始位置

2:maxCount:表示每页显示数据个数

3:a.create_time DESC:降序排列,需要在create_time建立索引

4:limiit放在里面,而不要放在查询的外面,这样效率提升很多

5:logid:唯一索引

相关文章

  • mysql双机热备实现方案【可测试】

    mysql双机热备实现方案【可测试】

    双机热备从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。这篇文章主要介绍了mysql双机热备实现方案,需要的朋友可以参考下
    2019-10-10
  • Mysql中关于Incorrect string value的解决方案

    Mysql中关于Incorrect string value的解决方案

    在对mysql数据库中插入数据的时候,直接插入中文是没有问题的!但是用预编译语句时,用流对数据进行处理总报incorrect string value这个异常。本篇文章教给你解决方法
    2021-09-09
  • MySQL从库维护经验分享

    MySQL从库维护经验分享

    这篇文章主要介绍了MySQL从库维护经验分享,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • Win7系统下mysql 5.7.11安装教程详解

    Win7系统下mysql 5.7.11安装教程详解

    这篇文章主要介绍了Win7系统下mysql 5.7.11安装教程,需要的朋友可以参考下
    2017-09-09
  • mysql连接查询、联合查询、子查询原理与用法实例详解

    mysql连接查询、联合查询、子查询原理与用法实例详解

    这篇文章主要介绍了mysql连接查询、联合查询、子查询原理与用法,结合实例形式详细分析了mysql连接查询、联合查询、子查询的基本概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-04-04
  • 提高MySQL中数据装载效率

    提高MySQL中数据装载效率

    很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。
    2009-11-11
  • MySQL Server 8.0.13.0 安装教程图文详解

    MySQL Server 8.0.13.0 安装教程图文详解

    本文通过图文并茂的形式给大家介绍了MySQL Server 8.0.13.0 安装教程 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • 浅谈Mysql指定顺序排序查询

    浅谈Mysql指定顺序排序查询

    给大家用过实例分析了Mysql查询中指定顺序排序的相关技术问题,需要的朋友参考一下吧。
    2017-12-12
  • 详解MySql存储过程参数的入门使用

    详解MySql存储过程参数的入门使用

    这篇文章主要介绍了MySql存储过程参数的入门使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL插入json问题

    MySQL插入json问题

    今天小编就为大家分享一篇关于MySQL插入json问题,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10

最新评论