mysql分页优化方法

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

原分页语句

SELECT * FROM `tt` LIMIT , 

执行这个语句需要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 , ) t2 USING (id)

修改之后只用了1.6秒

执行计划

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

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

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

SELECT id FROM `tt` LIMIT 4863000, 1000

mysql分页优化方法的更多相关文章

  1. MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?

    本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...

  2. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  3. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  4. redmine在linux上的mysql性能优化方法与问题排查方案

    iredmine的linux服务器mysql性能优化方法与问题排查方案     问题定位:   客户端工具: 1. 浏览器inspect-tool的network timing工具分析   2. 浏览 ...

  5. 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  6. mysql limit分页优化方法分享

    同样是取10条数据  select * from yanxue8_visit limit 10000,10 和  select * from yanxue8_visit limit 0,10  就不是 ...

  7. MySQL性能优化方法四:SQL优化

    原文链接:http://isky000.com/database/mysql-performance-tuning-sql 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需 ...

  8. MySQL配置文件my.cnf中文详解附mysql性能优化方法分享

    Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的 ...

  9. mysql数据库优化方法大数据量查询轻松解决

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

随机推荐

  1. 【Math】根据置信度、样本数相关推导过程

    时间长了会忘,备忘下. http://blog.csdn.net/liangzuojiayi/article/details/78044780 http://wiki.mbalib.com/wiki/ ...

  2. 《Python3网络爬虫开发实战》

    推荐:★ ★ ★ ★ ★ 第1章 开发环境配置 第2章 网页基础知识 第3章 网络爬虫基础 第4章 基本库的使用 第5章 解析库的使用 第6章 数据存储 第7章 Ajax数据爬取 第8章 动态渲染页面 ...

  3. MySQL 去除字段中的换行和回车符

    今天csv 导入关键词的时候遇到问题 字段结束会有 回车符号 解决方法: ), ),'');          char(10):  换行符          char(13):  回车符

  4. css3整理--transition

    transition语法: transition : [<'transition-property'> || <'transition-duration'> || <'t ...

  5. FOREIGN MySQL 之 多表查询

    一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment PRIMARY KEY, dname ...

  6. xml和json格式输出

    <?php   class Response{     const JSON ='json';       /*     * 按综合方式输出通信数据     * @param integer $ ...

  7. mysql命令大全用户管理相关命令

        1.登陆 mysql>mysql -uJDev -p 2.用户管理 mysql>use mysql; 3.查看有哪些登陆用户 mysql> select host,user, ...

  8. Kernel parameters for Db2 database server installation (Linux and UNIX)

    Db2 11.1 For root installations, the database manager uses a formula to automatically adjust kernel ...

  9. Multi-Database Transaction Demo

    public ResultM UploadFile(FileInfoM pFileInfoM) { ResultM result = }; DbModel db = new DbModel(); Db ...

  10. easyui datagrid 取消删除的方法

    下面为取消方法 ... { field: 'Guid', title: '操作', width: 80, align: 'center', formatter: function (value, ro ...