Teradata中的索引

Teradata中的索引,teradata,Teradata,如何在TERADATA数据库中启用/禁用索引 我想禁用索引并进行更新,然后在Teradata中启用索引 如果启用/禁用选项在Teradata中不可用,从某种意义上讲,我如何实现这一点?如果使用DROP索引,如何为所有表重新创建索引?Teradata没有禁用索引功能 所有表都有一个由RDBMS选择的主索引(PI),除非您指定一个 CREATE INDEX <index name> (<column list>) ON table name; CREATE UNIQUE I

如何在TERADATA数据库中启用/禁用索引

我想禁用索引并进行更新,然后在Teradata中启用索引


如果启用/禁用选项在Teradata中不可用,从某种意义上讲,我如何实现这一点?如果使用DROP索引,如何为所有表重新创建索引?

Teradata没有禁用索引功能

所有表都有一个由RDBMS选择的主索引(PI),除非您指定一个

CREATE INDEX <index name> (<column list>) ON table name;

CREATE UNIQUE INDEX (department) ON tbl_employee;

DROP INDEX ind_dept ON tbl_employee;

DROP INDEX (department,emp_number) ON tbl_employee;
在表名上创建索引();
创建tbl_员工的唯一索引(部门);
将索引ind_dept放在tbl_员工身上;
在tbl_员工身上放置索引(部门、emp_编号);

Teradata没有禁用索引功能

所有表都有一个由RDBMS选择的主索引(PI),除非您指定一个

CREATE INDEX <index name> (<column list>) ON table name;

CREATE UNIQUE INDEX (department) ON tbl_employee;

DROP INDEX ind_dept ON tbl_employee;

DROP INDEX (department,emp_number) ON tbl_employee;
在表名上创建索引();
创建tbl_员工的唯一索引(部门);
将索引ind_dept放在tbl_员工身上;
在tbl_员工身上放置索引(部门、emp_编号);

创建和删除索引是您在这里的唯一选项

创建和删除索引是您在
Teradata
中的唯一选项

您不能删除表的
主索引
主索引
定义数据将驻留的位置以及哪个AMP接收行

要更改表的
主索引
,您需要
删除表中的所有记录
(因为数据已经由PI的行哈希值分配)
,然后只有您可以使用以下命令更改表的主索引:-

Alter table table_name modify primary index index_name (column list);
实现目标的步骤

  • 您可以使用所需的索引(临时、wrk、中间表)装入新表。
插入原始表中的记录并更新wrk表
  • 删除原始表格并插入wrk表格数据

  • 完成了。

    Teradata
    中,不能删除表的
    主索引。
    主索引
    定义数据将驻留的位置以及哪个AMP接收行

    要更改表的
    主索引
    ,您需要
    删除表中的所有记录
    (因为数据已经由PI的行哈希值分配)
    ,然后只有您可以使用以下命令更改表的主索引:-

    Alter table table_name modify primary index index_name (column list);
    
    实现目标的步骤

    • 您可以使用所需的索引(临时、wrk、中间表)装入新表。
    插入原始表中的记录并更新wrk表
  • 删除原始表格并插入wrk表格数据

  • 完成了。

    Teradata提供了一种创建表的方法,无需选择主索引(如果您确定有任何列)

    您可以创建没有主索引的表。下面是一个示例,说明如何执行此操作:

    Create table <table name> 
    (<columnname> <datatype>,
    <columnname> <datatype>) 
    no primary index ;
    
    创建表
    ( ,
    ) 
    没有主要指标;
    
    Teradata为您提供了一种创建表的方法,无需选择主索引(如果您确定有任何列)

    您可以创建没有主索引的表。下面是一个示例,说明如何执行此操作:

    Create table <table name> 
    (<columnname> <datatype>,
    <columnname> <datatype>) 
    no primary index ;
    
    创建表
    ( ,
    ) 
    没有主要指标;
    
    简单答案-您不能在Teradata中禁用和重新启用索引。 然而,有一些变通办法

    下跌指数 如果你说的是PI(主要指数)——你不能放弃它。您所能做的就是复制一个没有索引的表。 不过,您可以删除辅助索引。然后,只需在需要时再次创建它

    拖放创建表 这并不适合所有情况,但通常这是完成工作的最快方法,特别是当您遇到PI问题时


    顺便说一句:现在还不清楚,你为什么要这么做?性能、逻辑还是其他?这可能会影响推荐。

    简单回答-您不能在Teradata中禁用和重新启用索引。 然而,有一些变通办法

    下跌指数 如果你说的是PI(主要指数)——你不能放弃它。您所能做的就是复制一个没有索引的表。 不过,您可以删除辅助索引。然后,只需在需要时再次创建它

    拖放创建表 这并不适合所有情况,但通常这是完成工作的最快方法,特别是当您遇到PI问题时


    顺便说一句:现在还不清楚,你为什么要这么做?性能、逻辑还是其他?这可能会影响推荐。

    因为您没有指定要禁用/启用哪种索引,下面是您可以在任何情况下使用的方法

    • 主要指标
    • 创建具有相同PI的新表
    • 将更新后的数据插入新表
    • 删除旧表-
      删除表
    • 将新表重命名为旧表。-<代码>将表格重命名为
    上述主索引建议仅适用于要更新主索引列值的情况如果要更新其他列(而不是PI列),则可以直接发出update语句。

    • 二级索引
    • 将SI-
      下拉索引放到上
    • 更新表数据
    • 在上重新创建SI-
      CREATE INDEX()

    由于您没有指定要禁用/启用哪种索引,以下是您可以在任何情况下使用的方法

    • 主要指标
    • 创建具有相同PI的新表
    • 将更新后的数据插入新表
    • 删除旧表-
      删除表
    • 将新表重命名为旧表。-<代码>将表格重命名为
    上述主索引建议仅适用于要更新主索引列值的情况如果要更新其他列(而不是PI co