1.创建索引
语法:
CREATE INDEX index_name ON table_name [USING method] ( column_name [ASC | DESC] [NULLS {FIRST | LAST}], ... );
参数说明:
在上面的语法中,我们使用了以下参数,如下表所示:
参数 | 描述 |
---|---|
Index_name | 它用于定义索引的名称。它应该写在CREATE INDEX 之后在这里,我们应该尽量给索引起一个通俗易懂、有意义的名字,这样容易让人想起。 |
Table_name | 该表名参数用于定义表名称,该名称与该索引相关。并且在ON关键字之后指定。 |
Using[method] | 用于指定索引方法,如B-tree、GIN、HASH、GiST、BRIN、SP-GiST。默认情况下,PostgreSQL 使用B-tree 索引。 |
Column_name | 该列名参数使用,如果我们有存储在索引数列定义列表。在ASC和DESC用于定义排序顺序。默认情况下,它是ASC。该NULLS FIRST或NULLS LAST来形容空排序之前或之后的非空值。当DESC被定义,那么NULLS FIRST被视为默认。当DESC是没有定义,那么NULLS LAST被视为默认。 |
注意:如果我们想确定一个命令是否使用索引,我们可以使用 EXPLAIN 命令。
实操示例:
CREATE INDEX ics_check_reoprt_task_id_idx ON ics_check_report(task_id);
说明:ics_check_reoprt_task_id_idx :索引名称,ics_check_report : 表名,task_id: 字段名
2.查看已经创建的索引,执行以下sql:
SELECT
ns.nspname as schema_name,
tab.relname as table_name,
cls.relname as index_name,
am.amname as index_type,
idx.indisprimary as is_primary,
idx.indisunique as is_unique
FROM
pg_index idx
INNER JOIN pg_class cls ON cls.oid=idx.indexrelid
INNER JOIN pg_class tab ON tab.oid=idx.indrelid
INNER JOIN pg_am am ON am.oid=cls.relam
INNER JOIN pg_namespace ns on ns.oid=tab.relnamespace
WHERE tab.relname = 'ics_check_report'
结果如下:
3.查看已经创建的索引,执行以下sql:
select * from pg_indexes where tablename = 'ics_check_report'