2009-07-02 185 views
1

鑑於類似下面的查詢:限制查詢

DELETE FROM FOO WHERE ID in (1,2,3,4,....); 
  • 是否有一個上限值的納入有多少? (我見過Oracle抱怨1000,但那是很久以前的事了,我不知道這是依賴於安裝還是依賴於oracle的版本等等,或者mysql如何限制它。什麼是性能問題?難道是更快的設定值的分成更小的子集,併發送多個刪除請求?

回答

4

the docs

IN列表中的值數量僅受限於max_allowed_packet值。

至於性能,我會分解查詢時,他們開始接近千位ID左右。 IN是非常優化的,但它似乎沒有任何好處可以來扔它巨大的名單。

2

如果你想確保你的發言總能工作,把它們放在一個temp表並做IN語句反對它

+0

這到底會如何呢? 「刪除從FOO WHERE ID在bar.id;」? – Thomas 2009-07-02 15:30:46

+1

從FOO刪除哪裏ID(從酒吧選擇ID) – 2009-07-02 15:32:48