DROP INDEX

您可以通过DROP INDEX语句删除已存在的索引。

引擎与版本

DROP INDEX语法仅适用于宽表引擎。无版本限制。

重要

使用DROP INDEX删除搜索索引列存索引要求Lindorm SQL为2.6.1以上版本。如何查看Lindorm SQL的版本,请参见SQL版本说明

语法

drop_index_statement     ::= DROP INDEX [IF EXISTS] index_identifier 
                             ON table_identifier;
重要
  • 使用DROP INDEX语句删除二级索引搜索索引前,必须通过ALTER INDEX语句禁用索引,并通过SHOW INDEX查看索引状态是否为INACTIVE。具体操作,请参见ALTER INDEXSHOW INDEX

  • 主表被删除时,对应的索引会被一并删除。

示例

假设创建主表和索引的语句如下:

-- 创建主表
CREATE TABLE test (
  p1 VARCHAR NOT NULL,
  p2 INTEGER NOT NULL,
  c1 BIGINT,
  c2 DOUBLE,
  c3 VARCHAR,
  c4 TIMESTAMP,
  PRIMARY KEY(p1, p2)
) WITH (CONSISTENCY = 'strong', MUTABILITY='MUTABLE_LATEST');

-- 创建二级索引idx1
CREATE INDEX idx1 ON test(c1 desc) include(c3,c4) WITH (COMPRESSION='ZSTD');

-- 创建搜索索引idx2
CREATE INDEX IF NOT EXISTS idx2 USING SEARCH ON test(p1, p2, c1, c2, c3);

-- 创建列存索引idx3
CREATE INDEX IF NOT EXISTS idx3 USING COLUMNAR
ON test(p1, p2, c1, c2, c3)
PARTITION BY ENUMERABLE (p1, p2, bucket(128, p1, p2));

删除二级索引

  1. 执行以下语句,禁用二级索引idx1。

    ALTER INDEX IF EXISTS idx1 ON test DISABLED;
  2. 删除二级索引。

    DROP INDEX IF EXISTS idx1 ON test;

结果验证

执行以下语句,查看索引删除结果。

SHOW INDEX FROM test;

删除搜索索引

  1. 执行以下语句,禁用搜索索引idx2。

    ALTER INDEX IF EXISTS idx2 ON test DISABLED;
  2. 删除搜索索引idx2。

    DROP INDEX IF EXISTS idx2 ON test;

结果验证

执行以下语句,查看索引删除结果。

SHOW INDEX FROM test;

删除列存索引

执行以下语句删除idx3:

DROP INDEX idx3 ON test;

结果验证

执行以下语句,查看索引删除结果。

SHOW INDEX FROM test;