您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_iqrebuildindex 过程

重建列索引。

若要重建缺省 FP 索引以外的索引,请指定索引名。无论 FP_NBIT_IQ15_COMPATIBILITY 设置如何,sp_iqrebuildindex 行为均相同。

语法

sp_iqrebuildindex (, )

注意第三方参考文档介绍不受支持的 sp_iqrebuildindex 语法。请注意,在索引子句中指定表名将产生错误:sp_iqrebuildindex , ''

参数

  • table_name进行索引重建过程的部分限定表名或完全限定表名。如果用户既拥有该表又执行该过程,则可以使用部分限定名;否则,表名必须为完全限定名。

  • index_clause一个或多个用空格分隔的以下字符串:column<[count]>index 每个 必须引用指定表中的某列或某个索引。如果多次指定 ,该过程就会返回一条错误,并且不重建任何索引。 是一个非负数,表示 IQ UNIQUE 值。在 CREATE TABLE 语句中,IQ UNIQUE (count) 表示给定列中所能容纳的不同值的估计数量。不同值的数量会影响查询速度和存储要求。 MERGEALL 和 RETIER 是特定于 HG 索引操作的关键字: sp_iqrebuildindex ('<table name>', 'index <index name> [ MERGEALL | RETIER ]') 如果从 HG 索引的某操作中忽略 MERGEALL 或 RETIER,则 sp_iqrebuildindex 将截断 HG 索引并根据列数据重建整个索引。 MERGEALL 可合并分层 HG 索引的所有层,并且将内容移动到相应的层中:sp_iqrebuildindex ('<table name>', 'index <index name> MERGEALL') 该合并可以确保在分层 HG 索引中只含有一个活动的子索引。如果有很多删除记录(如 sp_iqindexmetadata 所示),则 MERGEALL 操作可以减少分层索引的查询访问时间。只有在使用 index 子句并且指定索引为 HG 索引时才支持 MERGEALL。 RETIER 是特定于 HG 索引的关键字,可将 HG 索引的格式从不分层的 HG 更改为分层的 HG,或将分层的 HG 更改为不分层的 HG:sp_iqrebuildindex ('<table name>', 'index <index name> RETIER')RETIER 切换 HG 索引的格式: RETIER 将分层 HG 索引转换为单个的不分层 HG 索引。禁用分层元数据,并且只维护一个子索引。 RETIER 将不分层的 HG 索引转换成分层 HG 索引,并将包含所有数据的单个子索引推送到相应层中。 MERGEALL 和 RETIER 仅在以下情况下受支持:使用 index 子句并且指定的索引为 HG 索引。

  • RETIER 将分层 HG 索引转换为单个的不分层 HG 索引。禁用分层元数据,并且只维护一个子索引。

  • RETIER 将不分层的 HG 索引转换成分层 HG 索引,并将包含所有数据的单个子索引推送到相应层中。

    必须指定关键字 column 和 index。 这些关键字不区分大小写。

    注意此过程不支持 TEXT 索引。要重建 TEXT 索引,必须删除并重新创建该索引。

    特权

    您必须具有系统过程的 EXECUTE 特权。 您还必须具有以下一种:

  • INSERT ANY TABLE 系统特权

  • 用于重建索引的针对表的 INSERT 特权

  • 您拥有该表

    注释

    如果指定列名,sp_iqrebuildindex 会为该列重建缺省 FP 索引;不需要索引名。除列名之外,如果您还指定由 SAP IQ 分配的缺省 FP 索引名,则 sp_iqrebuildindex 将返回一个错误。

    在数据类型 LONG VARCHAR(CLOB) 的列中,sp_iqrebuildindex 将重建 WD 索引。

    含有 IQ UNIQUE 值的列可确定 sp_iqrebuildindex 将列重建为 Flat FP 还是 NBit。如果 IQ UNIQUE 值设置为 0,索引将重建为 Flat FP。如果 值大于 0 但小于 2,147,483,647,会将索引重建为 NBit。不含 值的 NBit 列将重建为 NBit。即使不指定计数,sp_iqrebuildindex 也会将 NBit 列重建为 NBit。如果指定计数, 值必须大于索引中已存在的唯一值数。

    如果您使用 Flat FP 索引重建列,并且列不包含 IQ UNIQUE 值,则 sp_iqrebuildindex 会将索引重建为 Flat FP 直至达到 FP_NBIT_AUTOSIZE_LIMIT 和 FP_NBIT_LOOKUP_MB 选项中定义的限制。如果 FP_NBIT_ENFORCE_LIMITS=ON 和基数超过计数,则为平面列指定 值将抛出错误。

    通过 sp_iqrebuildindex 缺省接口,用户可根据现有的 FP 索引重建整个 HG 索引。sp_iqrebuildindex 重新读取所有 FP 索引列值并创建 HG 索引。但是,这样会保留层大小、连续装载大小等所有元数据。

    示例

    重建列 的缺省 FP 索引:

    sp_iqrebuildindex 'emp1', 'column dept_id'

    或:

    call sp_iqrebuildindex ('empl1', 'column dept_id')

    创建列 c1 的平面 FP 索引:

    CREATE TABLE mytable (c1 int IQ UNIQUE (0))

    将缺省索引 Flat FP 转换为估计非重复计数为 1024 的索引 Nbit :

    sp_iqrebuildindex 'mytable', 'column c1 1024'

    或:

    call sp_iqrebuildindex ('mytable', 'column c1 1024')

    注意 在大型 HG 索引上运行 sp_iqrebuildindex 时,用户将发现性能临时下降。