簡體   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