MySQL优化一之limit优化
来源:互联网 发布:propolinse漱口水知乎 编辑:程序博客网 时间:2024/05/17 00:08
1.知识点
limit的几种形式
limit m,n 从m条后一条往后取n条数据,如0,10就是从第一条开始取10条数据。
limit n --> limit 0,n --> limit 0 offset n
2.问题:
我们都知道MySQL分页使用limit,是不是所有的分页我们都可以使用limit呢?
3.结论:
当然不是啦,大表的时候limit 10000,10 的时候MYSQL会扫描满足条件的100010行然后取后面的10行,如果limit的这个值很大的话,当然扫描的行数就变多了,所以查询时间会变慢。
4.优化
整个表的数据量在100W条左右。
方法一:
子查询
从 SELECT * FROM `mytest`.`table_rm001` ORDER BY id DESC LIMIT 100000,50;
到 SELECT * FROM `mytest`.`table_rm001` where id > (select id from `mytest`.`table_rm001` order by id limit 100000,1) limit 50
多次测试了下时间发现性能还是提高很多的。
第一条SQL平均在400ms左右,第二条SQL平均在60ms左右。
方法二:
超过一半反向查找
正向查找: (当前页 – 1) * 页长度
反向查找: 总记录 – 当前页 * 页长度
- 建表语句:
- CREATE TABLE `table_rm001` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `varchar` varchar(32) DEFAULT NULL,
- `tinyint` tinyint(4) DEFAULT NULL,
- `smallint` smallint(6) DEFAULT NULL,
- `mediumint` mediumint(9) DEFAULT NULL,
- `bigint` bigint(20) DEFAULT NULL,
- `integer` int(11) DEFAULT NULL,
- `float` float DEFAULT NULL,
- `real` double DEFAULT NULL,
- `decimal` decimal(10,0) DEFAULT NULL,
- `boolean` tinyint(1) DEFAULT NULL,
- `date` date DEFAULT NULL,
- `datetime` datetime DEFAULT NULL,
- `time` time DEFAULT NULL,
- `year` year(4) DEFAULT NULL,
- `text` text,
- `blob` blob,
- PRIMARY KEY (`id`),
- KEY `idx_float` (`float`),
- KEY `idx_varchar` (`varchar`)
- ) ENGINE=MyISAM AUTO_INCREMENT=3000001 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT |
0 0
- MySQL优化一之limit优化
- mysql之limit优化
- MySQL 之 limit优化
- Mysql优化之limit
- mysql 优化系列之 LIMIT
- mysql优化之limit与翻页优化
- MySQL慢查询优化之Limit优化
- mysql大数据量之limit优化
- Mysql分页之limit用法与limit优化
- Mysql分页之limit用法与limit优化
- MYSQL limit的优化
- MYSQL limit的优化
- MySQL limit查询优化
- mysql limit查询优化
- MYSQL limit的优化
- mysql limit查询优化
- mysql分页limit优化
- mysql limit优化
- django中的ajax实现(GET)
- Java 理论与实践: 正确使用 Volatile 变量
- 键盘挡住文本,调整键盘高度简单办法
- MySQL的日志管理
- hdu 1151 Air Raid
- MySQL优化一之limit优化
- php 中大括号的规范
- POJ_1679_The Unique MST(次小生成树模板)
- C语言的执行过程
- 加载声音资源的工具
- 收集小技巧
- Wedding (poj 3648 2-SAT 输出任意一组解)
- 如何实现单向链表的逆置
- HDU 5338. First One(尺取法)