[英]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_packet”參數控制。
如果將其表示為子查詢:
SELECT * FROM table
WHERE id IN (SELECT ID FROM SOME_OTHER_TABLE)
AND ...
沒有限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.