我有一个应该返回 2 行的查询。但是,它返回 48 行。它的行为就像正在连接的表之一不存在。但是,如果我将该表中的一列添加到 select 子句,而不更改查询的 from 或 where 部分,它将返回 2 行。
以下是“解释计划”在选择中没有“m.*”时所说的内容:
在选择中添加 m.* 后再次出现这里:
谁能解释为什么它应该这样表现?
更新:我们只在一个系统上遇到过这个问题,而在另一个系统上没有。DBA 验证了有问题的运行 optimizer_features_enable 设置为 10.2.0.5,而没有发生问题的运行 optimizer_features_enable 设置为 10.2.0.4。不幸的是,客户站点正在运行 10.2.0.5。