DB2中的奇怪结果。发散查询

问题描述 投票:2回答:1

尝试从db2数据库中收集结果时发生了一件奇怪的事,我不知道原因。

查询如下:

SELECT
    COUNT(*)
FROM
    MYSCHEMA.TABLE1 T1
WHERE
    NOT EXISTS (
        SELECT
            *
        FROM
            MYSCHEMA.TABLE2 T2
        WHERE
            T2.PRIMARY_KEY_PART_1 = T1.PRIMARY_KEY_PART_2
            AND T2.PRIMARY_KEY_PART_2 = T1.PRIMARY_KEY_PART_2
    )

这是一个非常简单的。奇怪的是,同一查询,如果将COUNT(*)更改为*,我将得到8结果,而使用COUNT(*)我将仅得到2。此过程重复了多次,奇怪的结果仍在继续。

在此示例中,TABLE2是TABLE1的父表,其中TABLE1的主键为PRIMARY_KEY_PART_1和PRIMARY_KEY_PART_2,而TABLE2的主键为PRIMARY_KEY_PART_1,PRIMARY_KEY_PART_2和PRIMARY_KEY_PART_3。它们之间没有外键(因为它们是传统的),并且它们具有大量的数据。

DB2查询来自SYSIBM.SYSVERSIONS的SELECT VERSIONNUMBER返回:

7020400
8020400
9010600

并且使用的客户端是SquirrelSQL 3.6(未标记行限制)。

那么,这个奇怪结果的解释是什么?

count db2 missing-data db2-luw
1个回答
0
投票

没有详细信息(至少包括表及其索引的准确的Db2版本和DDL),什么都可以,即使有了这些详细信息,只有IBM支持人员才能真正说出,真正的原因是什么? 。

通常看起来像是损坏的数据(例如,索引与表数据之间的差异)。

值得与IBM一起打开支持案例。

© www.soinside.com 2019 - 2024. All rights reserved.