mysql 中 limit 的效率问题
limit 效率问题
limit 是由mysql 的 server 层实现的。
一、如何用limit提升查询性能:
select * from T where login_name = 'XXX‘
如果 T.login_name 没有建立索引,则上面的查询语句会全表扫描。
select * from T where login_name = 'XXXX' limit 1
如果加上limit 1 当扫描到一条的数据的时候则不会再继续扫描,效率会大大的提高。
二、limit 低效率的情况:
在一种情况下 limit 效率非常低,只使用limit来查询的语句,并且偏移量特别大的情况。
例如:select * from table limit 15000000,1000;
select * from table while id>=150000 limit 1000;
语句1为0.2077秒;语句2为0.0063秒
两条语句的时间比是:语句1/语句2=32.968
比较以上的数据时,我们可以发现采用where...limit....性能基本稳定,受偏移量和行数的影响不大,而单纯采用limit的话,受偏移量的影响很大,当偏移量大到一定值后性能开始大幅下降。不过在数据量不大的情况下,两者的区别不大。
所以应当先使用where等查询语句,配合limit使用,效率才高
一分付出一分收获,在未来遇见更优秀的自己。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通