您可以通过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 INDEX和SHOW 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);
删除二级索引
执行以下语句,禁用二级索引idx1。
ALTER INDEX IF EXISTS idx1 ON test DISABLED;
删除二级索引。
DROP INDEX IF EXISTS idx1 ON test;
结果验证
执行以下语句,查看索引删除结果。
SHOW INDEX FROM test;
删除搜索索引
执行以下语句,禁用搜索索引idx2。
ALTER INDEX IF EXISTS idx2 ON test DISABLED;
删除搜索索引idx2。
DROP INDEX IF EXISTS idx2 ON test;
结果验证
执行以下语句,查看索引删除结果。
SHOW INDEX FROM test;