• mysql分页优化方法


    mysql分页优化方法

    今天遇到开发反应分页语句很慢,马上看一下到底是啥的分页语句

    原分页语句

    SELECT * FROM `tt` LIMIT 4863000, 1000

    执行这个语句需要6秒+时间

     

    执行计划为全表扫描

    在网上看到叶金荣对分页优化的文章,于是把语句修改为inner join的方式
    分页改为inner join的方式
    http://imysql.com/2014/07/26/mysql-optimization-case-paging-optimize.shtml




    修改后的语句

    SELECT
    *
    FROM
    `tt` t1
    INNER JOIN
    (SELECT
    id
    FROM
    `tt`
    LIMIT 4863000, 1000) t2 USING (id)

     

    修改之后只用了1.6秒

    执行计划

    修改之后的语句其实本质没有变还是扫描表得到4863000这个锚点之后的数据,但是仔细观察你会发现实际上子查询里面

    只查询id这一列,因为表本身有一个最窄索引IND_RSYNCS,这个索引只有一个列RSYNCS,利用这个最窄索引扫描到4863000之后的ID值

    id是主键,然后子表和主表做join,join条件是id,虽然本质没有变,但是相比改写前的语句大大节省了IO,所以查询速度有了质的提升

    SELECT id FROM `tt` LIMIT 4863000, 1000




  • 相关阅读:
    Python用户交互
    Python中的变量和常量
    Python的第一个程序:‘Hello World!’
    idea和pycharm激活方法
    Python环境准备(安装python解释器)
    Python简介
    编程与编程语言
    Linux下升级安装Python-3.6.2版本
    yum安装php5.5,php5.6和php7.0
    Postfix邮件黑名单和白名单
  • 原文地址:https://www.cnblogs.com/MYSQLZOUQI/p/6909956.html
Copyright © 2020-2023  润新知