繁体   English   中英

与条件较少的sql相比,条件更多的sql更快吗?

[英]Is sql with more where condition faster than those with less in mysql?

我有一个大表需要每隔5分钟由datetime列查询一次。

我的解决方案是这样的:

select * from tbl_name where datetime_col < '2019-05-26 20:49:00' and tag_col = 0;

,然后对结果集进行操作,如果“操作”成功,则更新行并将tag_col设置为1。

我的一位同事有这样的解决方案:

select * from tbl_name where datetime_col < '2019-05-26 20:49:00' and datetime_col >= '2019-05-26 20:44:00' and tag_col = 0;

,然后对结果集执行某些操作,如果“某事”失败,请更新该行,并在datetime_col中添加5分钟(以便下次选择该行),如果“某事”成功,则也请更新该行并将tag_col设置为1。

我的问题是,当datetime_col上有索引时,谁的sql更快(或它们也同样快)? 谢谢。

如果执行此查询:

select *
from tbl_name
where datetime_col < '2019-05-26 20:49:00'

大概您将要返回很多数据,因为按照您的描述,您有一个“大表”。 然后,您必须仔细检查以获取所需的结果。

如果执行:

select *
from tbl_name
where datetime_col < '2019-05-26 20:49:00'
order by datetime_col desc;

然后,我认为MySQL将使用索引并能够返回所需的行。 但是,您仍然返回很多行。 您应该测试性能是否还可以。

您的同事的查询是:

select *
from tbl_name
where datetime_col < '2019-05-26 20:49:00' and
      datetime_col >= '2019-05-26 20:44:00';'

这仅返回您想要的行-可能是更小的集合。 它应该使用索引来查找那些行。

我希望你的同事是正确的。 即使行不存在并且您必须发出另一个查询,也可能比返回几乎整个表更快。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM