SQL WhereIn 條件數量
起初聽到一位學姊說:他同事耳根子很硬不聽勸告,由於SQL的WhereIn條件只能下1000個,所以他同事就改成10個query,但執行時間要30幾秒,一樣可以解決,但其他人都覺得應該要用JOIN方式才是比較好
我常使用的是MySQL,也時常使用子查詢用WhereIn 來做條件搜尋,都沒有遇過這種只能查1000個條件的問題產生,就好奇是不是不同的SQL會有不同的設定或限制。
MySQL
MySQL沒有限制WhereIn的條件數量,但是有限制每次Insert/Update的資料大小max_allowed_packet
參數
MsSQL
以 官方文件 來說,只有告知可以下的條件為數千個
Explicitly including an extremely large number of values (many thousands of values separated by commas) within the parentheses
有熱心的人士提供了測試,測試結果為32767
個
StackExchange
Oracle
限制的條件數量為1000
根據學姊同事的敘述來說,10個Query,可以改成以下寫法,也是可以使用1個Query完成
1 | UPDATE task SET is_done = 1 |