【发布时间】:2026-01-17 13:30:01
【问题描述】:
您好,我想知道如何在 db2 中查找所有空表。我正在考虑列出每个模式的所有表(即“列出模式的表”),然后进行 count(*) 查询,检查哪些表给出了 0,但这看起来既麻烦又脏,因为我有编写一个 shell 脚本来解析表名并循环遍历每个表,运行 count SQL。
有没有更快的方法?
【问题讨论】:
您好,我想知道如何在 db2 中查找所有空表。我正在考虑列出每个模式的所有表(即“列出模式的表”),然后进行 count(*) 查询,检查哪些表给出了 0,但这看起来既麻烦又脏,因为我有编写一个 shell 脚本来解析表名并循环遍历每个表,运行 count SQL。
有没有更快的方法?
【问题讨论】:
另一种选择是查看数据字典或元数据表,如果正确收集了适当的统计信息,它们将包含此信息。在 oracle 中,这将是 user/all/dba_tables 数据字典视图。
看起来 D2 中的 SYSCAT.TABLES 目录视图有类似的用途,但列值也可能有 -1、-2,在这种情况下它们有不同的值。检查此链接。
SYSCAT.TABLES catalog view : DB2
count(*) 可能仍然更准确,因为在大多数情况下收集的统计数据并不能保证 100% 准确。
【讨论】:
COUNT(*) 时要小心交易 - 您可能会得到“旧”结果。