• 标记未使用的列


    如果您担心从大表中的所有行中删除列数据所需的时间长度,您可以使用该ALTER TABLE...SET UNUSED语句。

    该语句将一个或多个列标记为未使用,但实际上并未删除目标列数据或恢复这些列占用的磁盘空间。但是,标记为未使用的列不会显示在查询或数据字典视图中,并且会删除其名称,以便新列可以重用该名称。在大多数情况下,列上定义的约束、索引和统计信息也会被删除。例外是标记为未使用的 LOB 列的任何内部索引都不会被删除。

    要将hiredatemgr列标记为未使用,请执行以下语句:

    ALTER TABLE hr.admin_emp SET UNUSED (hiredate, mgr);

    您可以稍后通过发出ALTER TABLE...DROP UNUSED COLUMNS语句删除标记为未使用的列。每当显式删除表的任何特定列或列时,也会从目标表中删除未使用的列。

    数据字典视图USER_UNUSED_COL_TABS,ALL_UNUSED_COL_TABSDBA_UNUSED_COL_TABS可用于列出所有包含未使用列的表。COUNT字段显示表中未使用的列数。

    SELECT * FROM DBA_UNUSED_COL_TABS;
    
    OWNER                       TABLE_NAME                  COUNT
    --------------------------- --------------------------- -----
    HR                          ADMIN_EMP                       2

    对于外部表,SET UNUSED语句被透明地转换为ALTER TABLE DROP COLUMN语句。因为外部表仅由数据库中的元数据组成,所以DROP COLUMN语句的执行与SET UNUSED语句的执行等效。

    Removing Unused Columns

    ALTER TABLE...DROP UNUSED COLUMNS语句是唯一允许对未使用的列执行的操作。它从表中物理删除未使用的列并回收磁盘空间。

    在随后的ALTER TABLE语句中,CHECKPOINT指定了可选子句。此子句导致在处理指定的行数后应用检查点,在本例中为 250。检查点减少了删除列操作期间累积的撤消日志量,以避免潜在的撤消空间耗尽。

    ALTER TABLE hr.admin_emp DROP UNUSED COLUMNS CHECKPOINT 250;

    如果对表启用高级行压缩,则可以删除表列。如果仅启用基本表压缩,则不能删除列。

  • 相关阅读:
    Maven配置及本地仓库设置
    【转载】精神目标
    Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project fac
    MYSQL数据库无法使用IP地址访问的解决办法
    Unity3D基础--动态创建和设置游戏对象
    把解压缩版的tomcat6注册成服务并设置自启动
    ARToolKit for Unity环境搭建(初步搭建成功)
    问题
    关于SSH
    论文随笔
  • 原文地址:https://www.cnblogs.com/wonchaofan/p/16756069.html
Copyright © 2020-2023  润新知