云数据库 GaussDB-CREATE INDEX:示例

时间:2025-02-12 15:08:14

示例

  • 普通索引
    --创建tbl_test1表。gaussdb=# CREATE TABLE tbl_test1(    id int,           --用户id    name varchar(50), --用户姓名    postcode char(6)  --邮编);--创建表空间tbs_index1。gaussdb=# CREATE TABLESPACE tbs_index1 RELATIVE LOCATION 'test_tablespace/tbs_index1';--为表tbl_test1创建索引idx_test1指定表空间。gaussdb=# CREATE INDEX idx_test1 ON tbl_test1(name) TABLESPACE tbs_index1;--查询索引idx_test1信息。gaussdb=# SELECT indexname,tablename,tablespace FROM pg_indexes WHERE indexname = 'idx_test1'; indexname | tablename | tablespace -----------+-----------+------------ idx_test1 | tbl_test1 | tbs_index1(1 row)--删除索引。gaussdb=# DROP INDEX idx_test1;--删除表空间。gaussdb=# DROP TABLESPACE tbs_index1;
  • 唯一索引
    --为表tbl_test1创建唯一索引idx_test2。gaussdb=# CREATE UNIQUE INDEX idx_test2 ON tbl_test1(id);--查询索引信息。gaussdb=# \d tbl_test1           Table "public.tbl_test1"  Column  |         Type          | Modifiers ----------+-----------------------+----------- id       | integer               |  name     | character varying(50) |  postcode | character(6)          | Indexes:    "idx_test2" UNIQUE, btree (id) TABLESPACE pg_default--删除索引。gaussdb=# DROP INDEX idx_test2;
  • 表达式索引
    --为表tbl_test1创建一个表达式索引。gaussdb=# CREATE INDEX idx_test3 ON tbl_test1(substr(postcode,2));--查询索引信息。gaussdb=# \d tbl_test1           Table "public.tbl_test1"  Column  |         Type          | Modifiers ----------+-----------------------+----------- id       | integer               |  name     | character varying(50) |  postcode | character(7)          | Indexes:    "idx_test3" btree (substr(postcode::text, 2)) TABLESPACE pg_default--删除索引。gaussdb=# DROP INDEX idx_test3;
  • 部分索引
    --为表tbl_test1中id不为为空的数据建立索引。gaussdb=# CREATE INDEX idx_test4 ON tbl_test1(id) WHERE id IS NOT NULL;--删除索引。gaussdb=# DROP INDEX idx_test4;--删除表。gaussdb=# DROP TABLE tbl_test1;
  • 分区索引
    --建表。gaussdb=# CREATE TABLE student(id int, name varchar(20)) PARTITION BY RANGE (id) (    PARTITION p1 VALUES LESS THAN (200),    PARTITION pmax VALUES LESS THAN (MAXVALUE));--创建LOCAL分区索引不指定索引分区的名称。gaussdb=# CREATE INDEX idx_student1 ON student(id) LOCAL;--查看索引分区信息,LOCAL索引分区数和表的分区数一致。gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student1'::regclass;   relname   ------------- p1_id_idx pmax_id_idx(2 rows)--删除LOCAL分区索引。gaussdb=# DROP INDEX idx_student1;--创建GLOBAL索引。gaussdb=# CREATE INDEX idx_student2 ON student(name) GLOBAL;--查看索引分区信息,GLOBAL索引分区数和表的分区数不一致。gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student2'::regclass; relname ---------(0 rows)--删除GLOBAL分区索引。gaussdb=# DROP INDEX idx_student2; --创建LOCAL表达式索引,不指定索引分区的名称。gaussdb=# CREATE INDEX idx_student3 ON student(lower(name)) LOCAL;--查看索引分区信息,LOCAL索引分区数和表的分区数一致。gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student3'::regclass;   relname   ------------- p1_id_idx pmax_id_idx(2 rows)--删除LOCAL分区表达式索引。gaussdb=# DROP INDEX idx_student3;--创建GLOBAL表达式索引。gaussdb=# CREATE INDEX idx_student4 ON student(lower(name)) GLOBAL;--查看索引分区信息,GLOBAL表达式索引分区数和表的分区数不一致。gaussdb=# SELECT relname FROM pg_partition WHERE parentid = 'idx_student4'::regclass; relname ---------(0 rows)--删除GLOBAL分区表达式索引。gaussdb=# DROP INDEX idx_student4;--删除表。gaussdb=# DROP TABLE student;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0549.html