【发布时间】:2017-12-31 10:31:57
【问题描述】:
我在 Oracle (11g) 上有一个分区表 (MYTABLE)。 这是一个相当大的表,按 INSERT_DATE 列分区(没有时间)。
问题在于,Count(*) 给出的结果不正确。
下面的查询返回:5,726,829,673
SELECT count(*) FROM MYTABLE WHERE INSERT_DATE >= TO_DATE('01/01/2015', 'DD/MM/YYYY')
下面的查询返回:13,076,228,720
SELECT SUM(1) FROM MYTABLE WHERE INSERT_DATE >= TO_DATE('01/01/2015', 'DD/MM/YYYY')
这怎么可能?造成这种差异的原因是什么?
【问题讨论】:
-
我可能有个主意。你的确切 11g 版本是什么?
SELECT * FROM V$VERSION -
它是 Exadata 机器。详细信息包括:Oracle 数据库 11g 企业版版本 11.2.0.4.0 - 64 位生产 PL/SQL 版本 11.2.0.4.0 - 生产 CORE 11.2.0.4.0 适用于 Linux 的生产 TNS:版本 11.2.0.4.0 - 生产 NLSRTL 版本 11.2 .0.4.0 - 生产
-
这里也一样。我以为您遇到了影响版本 11.2.0.1 和 11.2.0.2 的Bug 9857247 Wrong results for count(*) with group by placement,但事实并非如此,因为它已在 11.2.0.3 。很奇怪,想知道是否有人作为解释......
-
这些数字有可能落后吗? (数数越大?)
标签: oracle oracle11g partitioning