REINDEX

    在以下几种情况下需要使用REINDEX重建索引:

    • 索引崩溃,并且不再包含有效的数据。
    • 索引变得“臃肿”,包含大量的空页或接近空页。
    • 使用CONCURRENTLY选项创建索引失败,留下了一个“非法”索引。

    注意事项

    REINDEX DATABASE和SYSTEM这种形式的重建索引不能在事务块中执行。

    • 重建普通索引。

    • 重建索引分区。

    参数说明

    • INDEX

      重新建立指定的索引。

    • INTERNAL TABLE

      重建列存表或Hadoop内表的Desc表的索引,如果表有从属的”TOAST”表,则这个表也会重建索引。

    • TABLE

    • DATABASE

      重建当前数据库里的所有索引。

    • SYSTEM

      在当前数据库上重建所有系统表上的索引。不会处理在用户表上的索引。

    • FORCE

      无效选项,会被忽略。

    • 需要重建索引的分区的名称或者索引分区的名称。

      取值范围:

      • 如果前面是REINDEX INDEX,则这里应该指定索引分区的名称;
      • 如果前面是REINDEX TABLE,则这里应该指定分区的名称;
      • 如果前面是REINDEX INTERNAL TABLE,则这里应该指定列存分区表的分区的名称。

    优化建议

    • INTERNAL TABLE

      此种情况大多用于故障恢复,不建议进行并发操作。

    • DATABASE

      不能在事务中reindex database。

    • SYSTEM

      不能在事务中reindex系统表。