PostgreSQLPostgreSQL查表的全局索引、普通索引

【PostgreSQL】PostgreSQL查表的全局索引、普通索引

  • 一、查询表上有哪些全局索引
  • 二、查看表上有哪些索引(除去全局索引其他都是本地索引)

PostgreSQL支持全局索引和普通索引两种索引类型。

  1. 全局索引(Global Index)
    全局索引是在整个数据库中创建的索引,可以被多个查询共享。全局索引适用于需要频繁查询的表,可以提高查询性能。全局索引可以在创建表时或者创建索引时指定。

创建全局索引的语法如下:

CREATE INDEX index_name ON table_name (column_name);

可以使用CREATE INDEX CONCURRENTLY语法创建并发索引,即在创建索引的同时允许对表进行读写操作。

  1. 普通索引(Regular Index)
    普通索引是在表中创建的索引,只能被该表的查询使用。普通索引适用于需要频繁查询的特定表,可以提高查询性能。普通索引可以在创建表时或者创建索引时指定。

创建普通索引的语法如下:

CREATE INDEX index_name ON table_name (column_name);

普通索引还可以根据需要指定其他属性,例如并发创建索引、部分索引、唯一索引等。

需要注意的是,全局索引和普通索引都需要根据具体的查询场景和表结构来选择合适的索引策略。过多或者不合适的索引可能会导致性能下降,因此在创建索引时应谨慎权衡。

一、查询表上有哪些全局索引

select t3.relname as tablename
      ,t1.relname as index_name 
  from pg_class t1
  join PG_INDEX t2 on (t1.oid = t2.indexrelid)
  join pg_class t3 on (t3.oid = t2.indrelid)
 where t3.relname = '表名' and t1.relkind = 'I';

二、查看表上有哪些索引(除去全局索引其他都是本地索引)

select schemaname,tablename,indexname 
  from PG_INDEXES 
 where tablename = '表名';