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