鉴于类似下面的查询:限制查询
DELETE FROM FOO WHERE ID in (1,2,3,4,....);
是否有一个上限值的纳入有多少? (我见过Oracle抱怨1000,但那是很久以前的事了,我不知道这是依赖于安装还是依赖于oracle的版本等等,或者mysql如何限制它。什么是性能问题?难道是更快的设定值的分成更小的子集,并发送多个删除请求?
鉴于类似下面的查询:限制查询
DELETE FROM FOO WHERE ID in (1,2,3,4,....);
是否有一个上限值的纳入有多少? (我见过Oracle抱怨1000,但那是很久以前的事了,我不知道这是依赖于安装还是依赖于oracle的版本等等,或者mysql如何限制它。什么是性能问题?难道是更快的设定值的分成更小的子集,并发送多个删除请求?
从the docs:
IN列表中的值数量仅受限于max_allowed_packet值。
至于性能,我会分解查询时,他们开始接近千位ID左右。 IN
是非常优化的,但它似乎没有任何好处可以来扔它巨大的名单。
如果你想确保你的发言总能工作,把它们放在一个temp表并做IN语句反对它
这到底会如何呢? “删除从FOO WHERE ID在bar.id;”? – Thomas 2009-07-02 15:30:46
从FOO删除哪里ID(从酒吧选择ID) – 2009-07-02 15:32:48