[英]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.