【问题标题】:Why does USER_UNUSED_COL_TABS contain only amount of unused columns but not names?为什么 USER_UNUSED_COL_TABS 只包含未使用列的数量而不包含名称?
【发布时间】:2014-01-24 22:40:24
【问题描述】:

以下字典视图:

SELECT * FROM USER_UNUSED_COL_TABS

只给出表名和未使用的列数。为什么看不到被标记为 UNUSED 的列名?

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    也许是因为如果您拥有这些信息,您将无能为力。您不能恢复它们,也不能明确地删除它们。您还可以添加一个具有相同名称的新列,因此如果您随后将其标记为未使用,则必须有一种方法可以让您区分它们。

    来自the documentation

    您可以查看数据中所有列标记为UNUSED的表 字典视图 USER_UNUSED_COL_TABSDBA_UNUSED_COL_TABSALL_UNUSED_COL_TABS.

    ... 列标记为UNUSED 后,您将无法访问 那一栏。 SELECT * 查询不会从未使用的数据中检索数据 列。另外标注UNUSED的列的名称和类型 在DESCRIBE 期间不会显示,您可以添加到 表一个与未使用的列同名的新列。

    对于未使用的列,您真正可以做的就是删除它们,使用DROP UNUSED COLUMNS 子句或删除另一列。 This view 显示了哪些表可能值得运行 DROP UNUSED COLUMNS 反对,我想,但据我所知并没有太大用处。

    【讨论】:

    • 我不会说它没有用。如果我能证明列的名称,它将帮助我诊断出无效的 ID 错误。在压缩表上删除未使用的列并不总是那么方便,因此事先知道它会修复错误会很有帮助。
    • 未使用的列如何给您一个无效的 ID 错误?您的意思是以前可以工作的查询现在出错,并且您希望能够表明这是因为某列已被标记为未使用?
    • 当基础表的列移动到未使用时,它发生在我身上的一个非专有软件没有更新其视图。或者至少我认为这是问题所在。我从来没有深入了解它,因为我不知道那里有哪个未使用的列。我认为视图会自动更新,所以我不确定这是不是发生了其他事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多