簡體   English   中英

mysql where子句使用“ IN”或多個“ OR”

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM