4.9 索引
4.9.1 索引简介
索引是数据库用于快速查询数据的方法,类似一本书的目录,通过目录可以找到查询的内容的页码
简历索引的代价:
增加数据库的存储空间
插入与修改花费时间较多
4.9.2 索引的分类
PostgreSQL支持一下几类索引:
BTree:最常用的索引,BTree索引适合用于处理等值查询和范围查询HASH:只能处理简单的等值查询GiST:不是单独一种索引类型,而是一种架构,可以在这种架构上实现很多不同的索引策略。GiST索引定义的特定操作符可以用于特定索引策略。PostgreSQL的标准发布中包含了用于二维几何数据类型的GiST操作符类,比如,一个图形包含另一个图形的操作符“@>”,一个图形在另一个图形的左边且没有重叠的操作符“<<”,等等SP-GiST:SP-GiST是“Space-Partitioned GiST”的缩写,即空间分区GiST索引。它是从PostgreSQL9.2版本开始提供的一种新索引类型,主要是通过一些新的索引算法来提高GiST索引在某种情况下的性能GIN:反转索引,可以处理包含多个键的值,如数组等。与GiST类似,GIN支持用户定义的索引策略,可通过定义GIN索引[…]
4.9.3 创建索引
语法:
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table_name [ USING method ] ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) [ WITH ( storage_parameter = value [, ... ] ) ] [ TABLESPACE tablespace_name ] [ WHERE predicate ]简单语句:
CREATE [UNIQUE] INDEx 索引名 ON 表(字段)
4.9.4 并发创建索引
使用并发创建索引加快运行速度
语法:使用
CONCURRENTLY关键字CREATE INDEX CONCURRENTLY 索引名 ON 表(字段);重建索引不支持
CONCURRENTLY关键字如果在创建索引过程中强行取消,可能会留下一个无效索引,但这个无效索引在插入修改时候依旧生效,查找时候不生效等问题,删除就好了
SROP INDEX 索引名;
4.9.5 修改索引
语法:
ALTER INDEX 索引名 RENAME TO 新索引名 ALTER INDEX 索引名 SET TABLESPACE 新表空间名 ALTER INDEX 索引名 SET ( storage_parameter = value [, ... ] ) ALTER INDEX 索引名 RESET ( storage_parameter [, ... ] )
4.9.6 删除索引
语法:
DROP INDEX [ IF EXISTS ] 索引名 [, ...] [ CASCADE | RESTRICT ]
最后更新于