为什么oracle IN子句仅对静态数据有1000的限制?

前端之家收集整理的这篇文章主要介绍了为什么oracle IN子句仅对静态数据有1000的限制?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Oracle IN子句对静态数据的限制为1000,但它接受来自子查询的无限数据.为什么?
这是对任何 expression list的限制:

A comma-delimited list of expressions can contain no more than 1000 expressions.

为什么1000?据推测,实现需要某种限制,这似乎绰绰有余.很可能,或者肯定可能是在几十年前设置限制时,也是限制的性能原因,特别是在这种情况下优化器将IN转换为多个OR语句(如果你可以看到)看看执行计划).

我很难想出一个合理的场景,需要靠近它,固定值无法从其他数据中作为子查询得出.

我怀疑它与logical database limits有些相关,例如表示你不能在表中有超过1000列;由于在insert语句中使用表达式列表来列出列和要插入的值,因此表达式列表必须能够匹配,但可能没有理由超过它.

当然猜测……如果没有看到软件的内部结构,你就不可能得到明确的答案.

原文链接:https://www.f2er.com/oracle/205661.html

猜你在找的Oracle相关文章