Oracle IN子句对静态数据的限制为1000,但它接受来自子查询的无限数据.为什么?
这是对任何
expression list的限制:
A comma-delimited list of expressions can contain no more than 1000 expressions.@H_403_7@
为什么1000?据推测,实现需要某种限制,这似乎绰绰有余.很可能,或者肯定可能是在几十年前设置限制时,也是限制的性能原因,特别是在这种情况下优化器将IN转换为多个OR语句(如果你可以看到)看看执行计划).@H_403_7@
我很难想出一个合理的场景,需要靠近它,固定值无法从其他数据中作为子查询得出.@H_403_7@
我怀疑它与logical database limits有些相关,例如表示你不能在表中有超过1000列;由于在insert语句中使用表达式列表来列出列和要插入的值,因此表达式列表必须能够匹配,但可能没有理由超过它.@H_403_7@
当然猜测……如果没有看到软件的内部结构,你就不可能得到明确的答案.@H_403_7@