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

将查询限制为一条记录可以提高性能

如何解决《将查询限制为一条记录可以提高性能》经验,为你挑选了1个好方法。

将查询限制为一个结果记录,如果表只有一个匹配结果,可以提高大型(ish)MySQL表的性能吗?

例如

 select * from people where name = "Re0sless" limit 1

如果只有一个具有该名称的记录?如果name主键/设置为唯一的呢?是否值得更新查询或增益是否最小?



1> John Douthat..:

如果列有

一个独特的指数:不,它不会更快

非唯一索引:也许,因为它会阻止发送任何其他行以外第一个匹配的,如果有的话

没有索引:有时候

如果1个或多个行匹配查询,没错,因为全表扫描,将暂停后的第一行是匹配的.

如果没有相匹配的行查询,没有,因为它需要完成全表扫描


根据我的理解,这里重要的是添加限制可能会使您的查询更快,但不会让它变慢.如果没有别的,它还可以明确地向未来的开发人员发送您的意图,以防他们必须调试您的条件不像您想象的那样独特的情况.我养成了每当我只有一个结果时总是添加限制子句的习惯.只是浪费了脑力来弄清楚预先存在的索引是否已经为你完成了.
它会阻止全表扫描,还是会导致全表扫描提前停止?如果记录不存在,它仍然需要进行完整的全表扫描.
你是对的.应该说它"可以"阻止全表扫描.我会调整帖子
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有