当我将LIMIT 1添加到MySQL查询中时,它会在找到1个结果后停止搜索(从而使其更快)还是仍然获取所有结果并在最后截断?
Answers:
根据查询,添加limit子句会对性能产生巨大影响。如果您只需要一行(或者知道只有一行可以满足查询这一事实),并且不确定内部优化器将如何执行它(例如,WHERE子句未命中索引等等),那么您绝对应该添加LIMIT子句。
至于优化的查询(在小型表上使用索引),性能可能无关紧要,但还是要重申一下-如果只对一行感兴趣,那么无论如何都不要添加LIMIT子句。
限制可能会影响查询的性能(请参见下面的注释和链接),并且还会减少MySQL输出的结果集。对于希望获得单个结果的查询,它有很多好处。
此外,限制结果集实际上可以加快总查询时间,因为传输大结果集会占用内存,并有可能在磁盘上创建临时表。我之所以提到这一点,是因为最近我看到一个没有使用限制的应用程序由于巨大的结果集而杀死了服务器,而由于限制,资源利用率急剧下降。
检查此页面以获取更多详细信息:MySQL文档:LIMIT优化
如果只有1个结果返回,那么否,LIMIT将不会使其更快。如果有很多结果,而您只需要第一个结果,并且没有GROUP或ORDER by语句,那么LIMIT将使其更快。
简而言之,答案是肯定的。如果将结果限制为1,则即使您“期望”一个结果,查询也会更快,因为您的数据库不会浏览所有记录。一旦找到与您的查询匹配的记录,它将停止。
UNIQUE
(或PRIMARY KEY
)约束(或索引),则不会。stackoverflow.com/questions/8467092/...