当前位置:  开发笔记 > 后端 > 正文

在您知道只有1个结果时,向MySQL查询添加"LIMIT 1"会使它们更快吗?

如何解决《在您知道只有1个结果时,向MySQL查询添加"LIMIT1"会使它们更快吗?》经验,为你挑选了3个好方法。

当我将LIMIT 1添加到MySQL查询时,它是否在找到1个结果后停止搜索(从而使其更快)或者它仍然获取所有结果并在结束时截断?



1> Eran Galperi..:

根据查询,添加限制子句会对性能产生巨大影响.如果你只想要一行(或者知道只有一行可以满足查询的事实),并且不确定内部优化器将如何执行它(例如,WHERE子句没有命中索引等等),那么你一定要添加一个LIMIT子句.

对于优化查询(使用小表上的索引),它可能在性能上没有太大影响,但是再次 - 如果您只对一行感兴趣而不是添加LIMIT子句.


出于抗议目的,您可能需要考虑发送LIMIT 2,然后如果您的单行假设不成立则进行投诉或轰炸.
@JeffreyHantin如果假设只有一个是正确的,那么不会添加LIMIT 2来杀死任何优化,因为它会搜索所有行吗?在这种情况下添加LIMIT 2并不比添加任何内容更好(优化方面).
@JeffreyHantin如果真的只有一个,你应该更喜欢为数据库添加一个唯一约束.更干净,然后通过健全性检查搞乱您的代码.

2> rjamestaylor..:

限制可以影响查询的性能(请参阅注释和下面的链接),它还会减少MySQL输出的结果集.对于您期望单个结果的查询,可以获益.

此外,限制结果集实际上可以加快总查询时间,因为传输大型结果集会使用内存并可能在磁盘上创建临时表.我提到这一点,因为我最近看到一个应用程序由于巨大的结果集而没有使用限制终止服务器,并且限制资源利用率大幅下降.

查看此页面了解更多细节:MySQL文档:LIMIT优化



3> Kris Erickso..:

如果只有1个结果回来,那么不,LIMIT不会让它更快.如果有很多结果,并且您只需要第一个结果,并且没有GROUP或ORDER by语句,则LIMIT将使其更快.


如果没有唯一/主键,则即使有一行也应该更快,因为它在找到第一个匹配项后便停止搜索
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有