【问题标题】:finding all empty tables in DB2在 DB2 中查找所有空表
【发布时间】:2026-01-17 13:30:01
【问题描述】:

您好,我想知道如何在 db2 中查找所有空表。我正在考虑列出每个模式的所有表(即“列出模式的表”),然后进行 count(*) 查询,检查哪些表给出了 0,但这看起来既麻烦又脏,因为我有编写一个 shell 脚本来解析表名并循环遍历每个表,运行 count SQL。

有没有更快的方法?

【问题讨论】:

    标签: sql db2


    【解决方案1】:

    另一种选择是查看数据字典或元数据表,如果正确收集了适当的统计信息,它们将包含此信息。在 oracle 中,这将是 user/all/dba_tables 数据字典视图。

    看起来 D2 中的 SYSCAT.TABLES 目录视图有类似的用途,但列值也可能有 -1、-2,在这种情况下它们有不同的值。检查此链接。

    SYSCAT.TABLES catalog view : DB2

    count(*) 可能仍然更准确,因为在大多数情况下收集的统计数据并不能保证 100% 准确。

    【讨论】:

    • 不过,使用 COUNT(*) 时要小心交易 - 您可能会得到“旧”结果。
    • 当然。但是,如果有这么多交易正在进行,统计数据也会过时。