mysql分页优化方法
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分页优化方法的更多相关文章
- MySQL分页优化中的“INNER JOIN方式优化分页算法”到底在什么情况下会生效?
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的 ...
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 30多条mysql数据库优化方法【转】
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- redmine在linux上的mysql性能优化方法与问题排查方案
iredmine的linux服务器mysql性能优化方法与问题排查方案 问题定位: 客户端工具: 1. 浏览器inspect-tool的network timing工具分析 2. 浏览 ...
- 转载:30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- mysql limit分页优化方法分享
同样是取10条数据 select * from yanxue8_visit limit 10000,10 和 select * from yanxue8_visit limit 0,10 就不是 ...
- MySQL性能优化方法四:SQL优化
原文链接:http://isky000.com/database/mysql-performance-tuning-sql 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需 ...
- MySQL配置文件my.cnf中文详解附mysql性能优化方法分享
Mysql参数优化对于新手来讲,是比较难懂的东西,其实这个参数优化,是个很复杂的东西,对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成,需要不断的 ...
- mysql数据库优化方法大数据量查询轻松解决
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
随机推荐
- Unity3D中Layers和LayerMask解析
Unity中是用int32来表示32个Layer层.int32表示二进制一共有32位(0—31).在Unity中可编辑的Layer如下图所示: 在Unity中每个GameObject都有Layer ...
- DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容
版本一: JAVA: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; i ...
- ios开发之--NSURL的用法
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/search?id=1"]; NSLog(@"schem ...
- 【问题集】redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range
redis.clients.jedis.exceptions.JedisDataException: ERR value is not an integer or out of range incrm ...
- db first和code first
1. db first 是现有数据库,再写代码.根据数据库的表生成类. django里面:python manage.py inspectdb 2. code first 是先写代码,后创建数据库. ...
- D - Football (aka Soccer)
Football the most popular sport in the world (americans insist to call it "Soccer", but we ...
- tsm 带库 磁带
磁带和存储池设置 新装入带库的磁带,需执行格式化命令方可使用,而存储池采用手工定义方式加入磁带,所以checkin状态设置为private,而不使用scratch磁带自动定义方式. label lib ...
- 远程登录oracle 12.2数据库报错ORA-28040解决办法
今天新安装的oracle 12.2.0.1数据库,通过本地sqlplus远程登录12c数据库报错ora-28040,如下: ORA-28040: No matching authentication ...
- tomcat运行模式
Tomcat Connector的三种不同的运行模式性能相差很大 这三种模式的不同之处如下: BIO: 一个线程处理一个请求.缺点:并发量高时,线程数较多,浪费资源. Tomcat7或以下,在Linu ...
- mybatis传入某一列的值,然后设置这一列的值是这个
select '${action}' as action from table name parameterType="map"可以指定为map,然后这边就可以用${xxx}来取值 ...