CREATE INDEX

功能描述

在指定的表上创建索引。

索引可以用来提高数据库查询性能,但是不恰当的使用将导致数据库性能下降。建议仅在匹配如下某条原则时创建索引:

  • 经常执行查询的字段。
  • 在连接条件上创建索引,对于存在多字段连接的查询,建议在这些字段上建立组合索引。例如,select * from t1 join t2 on t1.a=t2.a and t1.b=t2.b,可以在t1表上的a、b字段上建立组合索引。
  • where子句的过滤条件字段上(尤其是范围条件)。
  • 在经常出现在order by、group by和distinct后的字段。

在分区表上创建索引与在普通表上创建索引的语法不太一样,使用时请注意,如分区表上不支持并行创建索引,不支持创建部分索引。

新增可以指定 ALGORITHM 选项语法。

注意事项

  • 本章节只包含shark新增的语法,原openGauss的语法未做删除和修改。
  • 新增支持columnstore选项

语法格式

  • 在表上创建索引。
CREATE [ UNIQUE ] [ opt_clustered ] [COLUMNSTORE] INDEX [ CONCURRENTLY ] [ [schema_name.]index_name ] ON table_name [ USING method ]
    ({ { column_name [ ( length ) ] | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] )
    [ INCLUDE ( column_name [, ...] )]    
    [ WITH ( {storage_parameter = value} [, ... ] ) ]
    [ TABLESPACE tablespace_name ]
    [ COMMENT text ]
    [ VISIBLE | INVISIBLE ]
    [ WHERE predicate ];

参数说明

  • COLUMNSTORE

    该关键字为创建兼容D库的语法,指定列存选项。仅语法作用,没有实际功能。

  • opt_clustered

    参数内容为CLUSTERED/NONCLUSTERED,兼容D库的语法,指定创建聚合/非聚合索引。仅语法作用,没有实际功能。

示例

openGauss=# create table t1 (a int);
CREATE TABLE
openGauss=# create columnstore index on t1 (a);
NOTICE:  The COLUMNSTORE option is currently ignored
CREATE INDEX

openGauss=# create table t1 (a int);
CREATE TABLE
openGauss=# create clustered index on t1 (a);
NOTICE:  The COLUMNSTORE option is currently ignored
CREATE INDEX

相关链接

CREATE INDEX

意见反馈
编组 3备份
    openGauss 2025-06-07 22:42:35
    取消