[英]mysql where clause using 'IN" or multiple 'OR'
假設查詢多個條件,
select AA.*,BB.* from AA left join BB on AA.key=BB.key
where AA.key='red' or AA.key='green' or AA.key='blue' or AA.key='pink'
相比於
select AA.*,BB.* from AA left join BB on AA.key=BB.key
where AA.key IN ['red','green',blue',pink']
在MYSQL中,以上兩個選項中的任何一個是否比另一個更快? 我知道使用“ IN”會更漂亮,但是速度有所不同嗎(表在“ key”上有索引)
我看到了這篇文章,但是沒有關於速度的參考。
改善它的最好方法是在另一個帶有索引的表中擁有所需的鍵,然后將其聯接:
Select AA.*, BB.*
From AA
Join KEYS using (key)
Left Join BB using (key)
MySQL將選擇關於KEYS大小的最佳方法,並使其幾乎立即生效。
通常,避免使用OR語句,它們傾向於以聯合形式進行翻譯,但性能並不那么好。
RJS IN子句比SQL中的OR語句更快。
例如,如果您有3到5千條記錄,那么IN查詢比multi OR語句快5(大約)倍。
IN (...)
和OR
形式將產生相同的查詢計划,但是IN()
形式更易於解析,因此在解析器和優化器階段花費的時間更少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.