Ken*_*Ken 28 mysql performance exists
我正在使用MySQL 5.1,我的查询大致是这样的形式:
select count(*) from mytable where a = "foo" and b = "bar";
Run Code Online (Sandbox Code Playgroud)
在我的程序中,它唯一检查的是零或非零.如果我将其转换为:
select exists(select * from mytable where a = "foo" and b = "bar");
Run Code Online (Sandbox Code Playgroud)
MySQL是否足够聪明,可以在第一次搜索时停止搜索?或者是否有其他方式与MySQL通信我的意图只是找出是否有任何记录符合这一点,我不需要一个确切的计数?
Tho*_*mas 31
是的,当使用Exists函数返回行时,MySQL(实际上我所知的所有数据库系统)将停止处理.
您可以在MySQL文档中阅读更多内容: 如果子查询返回任何行,则EXISTS子查询为TRUE.
lin*_*ogl 12
我已经运行了1000个查询的测试.SELECT EXISTS比...快25%左右SELECT COUNT.添加limit 1到SELECT COUNT没有任何区别.
小智 5
这或许也是一种做法。
select 1 from mytable where a = "foo" and b = "bar" limit 1;
Run Code Online (Sandbox Code Playgroud)
这不会遍历所有满足 where 条件的记录,而是在第一次“命中”后返回“1”。缺点是您需要检查结果,因为返回的记录集可能为空。
| 归档时间: |
|
| 查看次数: |
12181 次 |
| 最近记录: |