簡體   English   中英

在MySQL中傳遞給IN()的最大項數是多少

[英]What is the maximum number of items passed to IN() in MySQL

我得到了一堆ID(來自外部源),我需要與我們數據庫中的ID進行交叉引用,並過濾掉那些介於某個日期之間的ID,並且還“啟用”和其他一些參數。 我可以通過以下方式輕松完成:

SELECT * FROM `table` WHERE `id` IN (csv_list_of_external_ids) 
    AND (my other cross-reference parameters);

通過這樣做,在所有傳入的ID中,我將獲得我想要的ID。 但是,當外部ID數以千計時,這顯然不是一種非常有效的方法。 而且我不確定MySQL是否會支持如此龐大的查詢。

鑒於沒有任何東西可以緩存(因為用戶數據和外部ID在每個查詢中都會發生很大變化),並且這些查詢至少每10秒發生一次。 還有哪些其他SQL替代品?

我相信唯一的限制是實際查詢的長度,它由my.cnf文件中的“max_allowed_pa​​cket”參數控制。

如果將其表示為子查詢:

SELECT * FROM table
WHERE id IN (SELECT ID FROM SOME_OTHER_TABLE)
AND ...

沒有限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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