PostgreSQL索引分类及使用

1.索引方式

PostgreSQL数据库支持单列index,多列复合 index, 部分index, 唯一index, 表达式index,隐含 index, 和并发index。

2.索引方法

PostgreSQL 支持 B-tree, hash, GiST, and GIN index methods。

3.索引使用范围

1).B-tree

B-tree可以有效使用当一个查询包含等号(=)和范围操作符 (<, <=, >, >=, BETWEEN, and IN)。

2).hash

一个等号操作符(=),不适合范围操作符。

3).GiST

适用于自定义复杂类型,包括rtree_gist, btree_gist, intarray,tsearch, ltree 和 cube。

4).GIN

GIN比GiST占用多三倍多空间,适合复杂like,例如like ‘%ABC12%’。

4.索引使用注意事项

1).当一个表有很多行时,对一个表列进行索引是很重要的。

2).当检索数据时,应该选择一个好的备选列作为索引,外键,或者取最大最小值的键,列的选择性对索引有效性很重要。

3).为了更好的性能要移除不使用的索引,为了清除无法利用的行每隔一月重建所有索引。

4).如果有非常大量的数据,使用表分区索引。

5)当列中包含NULL值时,可以考虑建立一个不包含NULL的条件索引。

时间: 2025-01-16 07:54:11

PostgreSQL索引分类及使用的相关文章

mysql 索引分类以及用途分析

MySQL索引分为普通索引.唯一性索引.全文索引.单列索引.多列索引等等.这里将为大家介绍着几种索引各自的用途. 一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Tablename(列的列表) alter table TableName add index (列的列表) create table TableName([...], index [IndexNam

PostgreSQL索引描述

索引方式:唯一索引,主键索引,多属性索引,部分索引,表达式索引. 索引类型:B-Tree,Hash,GiST,GIN以及表达式索引 PostgreSQL所有索引都是“从属索引”,也就是说,索引在物理上与它描述的表文件分离. 索引也是对象,在表pg_class里有记录. 索引的内部结构与索引的访问方法(索引类型)相关.所有访问方法都通过页面来组织索引的内部结构,这样可以使用存储管理器提供的接口来访问索引. 索引方式 多属性索引:如果一个索引定义多一个一个属性,就称为多属性索引,用于组合查询. Po

简述数据库系统索引分类

1.关系模式存取方法 存取方法是快速存取数据库中数据的技术.数据库管理系统一般提供多种存取方法.常用的存取方法为索引方法和聚簇(clustering)方法. 2.索引简介 当表的数据量比较大时,查询操作会比较耗时.建立索引是加快查询速度的有效手段,但数据更新时,维护相应的索引也需要牺牲一定的系统性能,应根据实际的情况选择性的使用索引. 3.索引的分类 3.1.按组织方式分类 (1)聚簇索引(clustered index) 聚簇索引会对表进行物理排序,所以这种索引对查询非常有效,一个表中只能有一

数据库索引分类

数据库索引 作用: 提高查询速度 确保数据的唯一性 可以加速表和表之间的连接,实现表和表之间的参照完整性 使用分组和排序子句进行数据检索时,可以减少分组和排序的时间 全文检索字段进行搜索优化 分类: 主键索引(PRIMAY KEY) 唯一索引(UNIQUE) 常规索引(INDEX) 全文索引(FULLTEXT) 主键索引 主键: 某一个属性组能唯一标识的一条记录 如:学生表(学号,姓名,班级,性别等等),学号是唯一标识的,可以作为主键 特点: 最常见的索引类型 确保数据记录的唯一性 确定特定数据

索引分类

1.索引,主键,唯一索引,联合索引的区别 http://blog.csdn.net/u011341352/article/details/47731255 2.创建'联合索引'的意义?https://segmentfault.com/q/1010000000342176 3.聚集索引和非聚集索引http://www.cnblogs.com/julin-peng/p/4807843.html

PostgreSQL 索引膨胀

索引膨胀,主要针对B-tree而言 索引膨胀的几个来源: 大量删除发生后,导致索引页面稀疏,降低了索引的使用效率: PG9.0之前的版本,vacuum full会同样导致索引页面稀疏: 长时间运行的事务,禁止vacuum对表的清理工作二导致页面稀疏状态一致保持. 注意REINDEX会造成全表锁,不要在系统繁忙的时候操作 查看索引占用的空间: select pg_relation_size(oid)/1024/1024,relname from pg_class where relkind='i'

索引分类、创建索引、删除索引

1.普通索引没有索引类型: 2.唯一性索引: 索引起别名: 3.多列索引: 在已有表上创建索引: 表4 CREATE INDEX index_userName ON t_user4(userName); 创建唯一性索引:(有别名) CREATE UNIQUE INDEX index_password ON t_user4(PASSWORD); 多列索引: 4.用ALTER TABLE创建索引: 唯一性索引: 多列索引: 删除索引: DROP INDEX index_password ON t_u

mysql 索引分类

在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令 MySQL的查询和运行更加高效.索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 1.普通型索引 这是最基本的索引类型,而且它没有唯一性之类的限制.普通索引可以通过以下几种方式创建: (1)创建索引,例如CREATE INDEX 索引的名字 ON tablename (列名1,列名2,...); (2)修改表,例如ALTER TABLE tablenam

Mysql索引分类和索引优化

一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTree索引,Hash索引只能用于=或<=>的等式比较. 1.普通索引:create index on Tablename(列的列表) alter table TableName add index (列的列表) create table TableName([...], index [IndexName] (列的列表) 2.唯一性索引:create unique index alter ... add uniqu