为什么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的限制:
为什么1000?据推测,实现需要某种限制,这似乎绰绰有余.很可能,或者肯定可能是在几十年前设置限制时,也是限制的性能原因,特别是在这种情况下优化器将IN转换为多个OR语句(如果你可以看到)看看执行计划). 我很难想出一个合理的场景,需要靠近它,固定值无法从其他数据中作为子查询得出. 我怀疑它与logical database limits有些相关,例如表示你不能在表中有超过1000列;由于在insert语句中使用表达式列表来列出列和要插入的值,因此表达式列表必须能够匹配,但可能没有理由超过它. 当然猜测……如果没有看到软件的内部结构,你就不可能得到明确的答案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |