加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 13:50:30 所属栏目:百科 来源:网络整理
导读:Oracle IN子句对静态数据的限制为1000,但它接受来自子查询的无限数据.为什么? 这是对任何 expression list的限制: A comma-delimited list of expressions can contain no more than 1000 expressions. 为什么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语句中使用表达式列表来列出列和要插入的值,因此表达式列表必须能够匹配,但可能没有理由超过它.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读