Mysql的分页查询语句的性能分析
来源:互联网 发布:淘宝掌柜推荐怎么设置 编辑:程序博客网 时间:2024/05/22 03:32
MySql分页sql语句,如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。
1.1最基本的分页方式:
在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:
举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10
1.2子查询的分页方式:
随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:
一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。
此时,我们可以通过子查询的方式来提高分页效率,大致如下:
SELECT * FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10
1.3JOIN分页方式
经过我的测试,join分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。
explain SQL语句:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where
2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index
为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。
实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。
- Mysql的分页查询语句的性能分析
- MySQL的分页查询语句
- MySql分页查询语句分析
- MySQL 分页查询性能分析
- MySQL与Oracle的分页查询语句
- MySQL、Oracle分页查询的SQL语句
- Oracle和Mysql的分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- mysql分页原理和高效率的mysql分页查询语句
- MySQL查询语句的性能优化
- MySQL的limit用法和分页查询的性能分析及优化(转)
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MySql实现分页查询的SQL,mysql实现分页查询的sql语句
- MYSQL初学——数据库与表的建立、修改、删除
- [绍棠][数学] 欧拉角、四元数
- node环境搭建开发
- Ubuntu 14.04+cuda8.0+opencv3.1+caffe
- jzoj 2051. 【8.18】极其简单的最短路问题
- Mysql的分页查询语句的性能分析
- Json串校验
- MFC全局函数AfxBeginThread 及其与CreateThread的区别
- OpenCV高斯差分技术实现图像边缘检测
- Qt之网络编程
- 【poj 1692】Crossed Matchings (最长公共子序列变形)
- api 数据 App 抓包工具 fiddler
- JavaScript最短代码:找出凶手
- android 圆角图片的实现形式