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索引还是能正常工作的。
继续阅读与本文标签相同的文章
上一篇 :
是什么在阻碍开发者使用开源软件?
下一篇 :
php 分享字符串十进制与十六进制相互转换的实例
-
小鹏P7售价28.3-39.6万元,何小鹏称Model 3毫无竞争力
2026-05-14栏目: 教程
-
Vision M NEXT 概念车,宝马面向“未来”的产品张什么样?
2026-05-14栏目: 教程
-
大反转!谷歌态度开始“服软”,华为即将获得GMS许可
2026-05-14栏目: 教程
-
Python 超简单实现9种图像风格迁移
2026-05-14栏目: 教程
-
华为打回欧洲市场!HMS取得重大成功,大量APP接入!谷歌慌不慌?
2026-05-14栏目: 教程
