当你知道只有1个结果时,向MySQL查询添加“LIMIT 1”会使它们更快吗?
当我将LIMIT 1添加到MySQL查询中时,是否在find1个结果(从而使其更快)之后停止search?还是仍然获取所有结果并在结尾截断?
根据查询,添加限制子句可能会对性能产生巨大影响。 如果只需要一行(或者知道只有一行可以满足查询),并且不确定内部优化程序如何执行它(例如,WHERE子句不会触及索引等等),那么你一定要添加一个LIMIT子句。
至于优化查询(在小表上使用索引),性能可能并不重要,但是如果您只关心一行而不是添加LIMIT子句。
限制可能会影响查询的性能(请参阅注释和下面的链接),并且还会减less由MySQL输出的结果集。 对于您期望获得单一结果的查询,有益处。
而且,限制结果集实际上可以缩短总查询时间,因为传输大型结果集使用内存,并可能在磁盘上创build临时表。 我提到这一点,因为我最近看到一个应用程序没有使用限制杀死服务器,由于巨大的结果集和限制资源利用率下降巨大。
检查此页面以获取更多细节: MySQL Documentation:LIMIT Optimization
如果只有1个结果返回,那么不,LIMIT不会使它更快。 如果有很多结果,并且只需要第一个结果,并且没有GROUP或ORDER语句,那么LIMIT将使其更快。
如果你真的只希望得到一个单一的结果,那么把LIMIT追加到你的查询中是非常有意义的。 我不知道MySQL的内部工作原理,但是我确定它不会收集100000条logging的结果集,只是在最后将它截断为1。
简言之,答案是肯定的。 如果将结果限制为1,那么即使您期待得到一个结果,查询也会更快,因为您的数据库不会查看所有logging。 只要find与您的查询匹配的logging,它就会停止。