mysql order by limit性能优化研究
时间:2016-06-27
musql order by不合理的使用,特别是与LIMIT在一起不合理的使用,往往是导致MySQL的性能下的原因之一。本文章向大家介绍mysql order by limit性能优化方面的相关知识,以便大家避免这些问题。
https://www.percona.com/blog/2006/09/01/mysql-order-by-limit-performance-optimization/
MySQL的ORDER BY与LIMIT经常使用在大型数据集的交互式应用程序中进行排序。在许多网站上,比如查询最近注册用户,这些功能都需要使用到ORDER BY与limit。一般这种类型的ORDER BY的语句是这样的:
SELECT ….. WHERE [conditions] ORDER BY [sort] LIMIT N,M
当SQL里面有ORDER BY LIMIT的时候请确保查询中使用到索引,因为有了索引,ORDER BY LIMIT不会扫描和排序整个结果集。 比如下面sql查询语句:
SELECT * FROM sites ORDER BY date_created DESC LIMIT 10;
如果我们在date_created上使用索引,查询将会变得很快。
再比如我们有这样一个SQL查询语句:
SELECT * FROM sites WHERE category_id=5 ORDER BY date_created DESC LIMIT 10;
在date_created字段上创建索引将会提高执行效率,但是这不是最高效的方法,我们可以为date_created和category_id创建联合索引,执行效率会更高。
我们将上面的SQL稍微改变一下:
SELECT * FROM sites WHERE category_id in (5,10,12) ORDER BY date_created DESC LIMIT 10;
看起来和上面的SQL语句没有实质性的改动,但是他们的查询效率还是有很多的差别,因为现在有多个category_id并且我们使用了in语句,所以联合索引date_created和category_id不管用了,但是单独的date_created索引还是能正常工作的。
- 我的第五个网页制作:pre、html转义、abbr标签的使用
- UVALive 3882 - And Then There Was One【约瑟夫问题】
- 超级账本项目:链码示例
- 我的第六个网页制作:table标签
- POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】
- UVA 11039-Building designing【贪心+绝对值排序】 UVA11039-Building designing
- UVA 11636-Hello World!(水题,猜结论) UVA11636-Hello World!
- 百度某SDK设计缺陷导致手机敏感信息泄露(IMEI号和地理位置信息等)
- HDU 1004 Let the Balloon Rise【STL<map>】
- UVA 10881 - Piotr's Ants【模拟+思维】
- DFS中的奇偶剪枝学习笔记
- POJ 3154 Graveyard【多解,数论,贪心】
- HDU 1010 Tempter of the Bone【DFS经典题+奇偶剪枝详解】
- Ethereum - 以太坊项目
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解