PostgreSQL索引描述
索引方式:唯一索引,主键索引,多属性索引,部分索引,表达式索引.
索引类型:B-Tree,Hash,GiST,GIN以及表达式索引
PostgreSQL所有索引都是“从属索引”,也就是说,索引在物理上与它描述的表文件分离。
索引也是对象,在表pg_class里有记录。
索引的内部结构与索引的访问方法(索引类型)相关。所有访问方法都通过页面来组织索引的内部结构,这样可以使用存储管理器提供的接口来访问索引。
索引方式
多属性索引:如果一个索引定义多一个一个属性,就称为多属性索引,用于组合查询。
PostgreSQL中的B-Tree,GiST,GIN都支持多属性索引。最多支持32个属性。
不仅可以用表中的属性,而且还可以用函数或者表达式计算得到的值作为属性索引。
部分索引:建立在表上的子集的一个索引,该子集有一个表达式定义(表达式就是部分索引谓词)。
CREATE INDEX STU_NAME_INX ON STUDENT(NAME) WHERE (ID > 10 AND ID <20);
使用部分索引,能够减小索引规模,提高索引查询效率。
表达式索引:可以建立在函数或者从表中一个或者多个属性计算出来的标量表达式上。
CREATE INDEX STU_LOW_NAME_IDX ON STUDENT(LOWER(NAME));
表达式索引,只有在查询是使用与创建时相同的表达式才有作用。
部分索引谓词跟表达式索引的表达式都会存储在pg_index表indexprs属性中。
在创建索引的时候,会根据表达式计算出实际索引值的范围,这会导致插入跟新速度变慢。
索引类型
B-Tree:一种类似于B+数的数据结构来存储数据的键值。
支持比较查询跟范围查询(>,=,<)。
Hash:Hash索引会使用hash函数对索引关键字进行散列,Hash只能处理=操作。
GiST:通用搜索树,这个需要单独来学习。
GIN:倒排索引,可以处理包含多个键的值(例如数组)。跟GiST类似。
索引相关系统表
pg_am:
postgres=# select count(*) from pg_am;
count
-------
5
(1 row)
分别为:btree,hash,gist,gin,spgist。
如果是做数据库二次开发的,可以关注后面13个字段,是提供13个模块的接口函数。
pg_index:
创建个索引,会再pg_class创建个添加一条记录,也会再pg_index添加一条。
pg_index用于记录索引的相关信息。
几个重要字段说明:
indexrelid 该索引在pg_class里的OID。
indrelid 表示索引依赖的的基表的OID。
indisvalid 为真,那么可用于查询,否则表示该索引不完善,需要在INSERT/UPDATE操作时更新。
indkey 这为一个数组,记录这个索引在基表那些字段上面建立了索引,如果数组里有值为0,那么索引属性在表属性上是一个表达式。
indexprs 索引的表达式
pg_opclass:
每一个索引类型并不直接设定该类型的索引所要操作的数据类型。该表表明了索引索引方法在操作特定数据
类型的时候,需要使用的的操作集合。
还有几个系统视图,都是对索引操作类型的说明
pg_opfamily:
pg_amop:
pg_amproc:
PostgreSQL索引描述的更多相关文章
- PostgreSQL索引介绍
h1, h2, h3, h4, h5, h6, p, blockquote { margin: 5px; padding: 5; } body { font-family: "Helveti ...
- 从一个实例谈谈postgresql索引锁
最近客户在使用我司开发的数据库时,报告了如下问题(也不能算是问题,就是疑惑吧),环境如下: OS : Red Hat Enterprise Linux Server release 6.7 (Sant ...
- PostgreSQL索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 [作者 高健@博客园 luckyjackgao@gmail.com] 本页目的,是起到索引其他所有本人所写文档的作用: 分类一:PostgreSQL基础 ...
- PostgreSQL 索引坏块处理
今天应用反应有张表查询报错,报错信息如下 back=# select max(create_time) from public.tbl_index_table where create_time> ...
- PostgreSQL索引思考
当在看Monetdb列存行只支持IMPRINTS和ORDERED这两种索引,且只支持定长数值类型时,就在思考,对于列存,还有必要建索引吗?在PostgreSQL的索引就要灵活很多,我对常用列建合理的索 ...
- postgresql 索引
1.B-tree索引 create index idx_contacts_name on contacts(name); 2.数组索引 create index idx_contacts_phone ...
- PostgreSQL 索引膨胀
索引膨胀,主要针对B-tree而言 索引膨胀的几个来源: 大量删除发生后,导致索引页面稀疏,降低了索引的使用效率: PG9.0之前的版本,vacuum full会同样导致索引页面稀疏: 长时间运行的事 ...
- PostgreSQL内部结构与源代码研究索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 luckyjackgao@gmail.com 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的内部结构和源代码研究相关文摘 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
随机推荐
- 解决IDEA Struts2 web.xml问题
用IDEA整合SSH时,在web.xml中配置Struts2核心过滤器--"<filter-class>org.apache.struts2.dispatcher.ng.filt ...
- Java基础笔记11
异常: 即java程序在运行时出现的意外情况. java如何处理异常. try{ //可能发生异常的地方 }catch(异常类型 对象){ //异常处理处 }catch(异常类型 对象){ }.. ...
- JAVA提高十一:LinkedList深入分析
上一节,我们学习了ArrayList 类,本节我们来学习一下LinkedList,LinkedList相对ArrayList而言其使用频率并不是很高,因为其访问元素的性能相对于ArrayList而言比 ...
- scanf和cin性能的比较
我的实验机器配置是: 处理器:Intel(R) Core(TM) i3-7100U CPU @ 2.40GHz 2.40GHz 随机访问存储器:4.00GB 操作系统:Windows10 集成开发环境 ...
- Java实现TFIDF算法
算法介绍 最近要做领域概念的提取,TFIDF作为一个很经典的算法可以作为其中的一步处理. 关于TFIDF算法的介绍可以参考这篇博客http://www.ruanyifeng.com/blog/2013 ...
- VMware14.0.0 版本虚拟机安装Ubuntu16.04 LTS版本Linux系统(多图详细步骤)
一.前期准备工作 1.成功安装完成VMware14软件: 2.去Ubuntu官网下载Ubuntu16.0.4 LTS 版本的镜像文件. 二.安装步骤 1.打开VMware软件,选择<创建虚拟机& ...
- [转载] 一致性hash算法释义
转载自http://www.cnblogs.com/haippy/archive/2011/12/10/2282943.html 一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Ka ...
- 基于.NET CORE微服务框架 -surging 基于messagepack、protobuffer、json.net 性能对比
1.前言 surging内部使用的是高性能RPC远程服务调用,如果用json.net序列化肯定性能上达不到最优,所以后面扩展了protobuf,messagepack序列化组件,以支持RPC二进制传输 ...
- pt-stalk
1.名词解释 Collect forensic data about MySQL when problems occur 在问题发生的时候采集现场数据 pt-stalk waits for a tri ...
- open_basedir restriction in effect.文件访问没有权限异常
本次搭建公司web开发环境遇到了不少坑首先认为可能是设置的目录写入权限问题,后面解决了发现不是 问题在于nginx配置文件进行了网站目录的保护 配置文件/usr/local/nginx/conf/fa ...