PostgreSQL索引相关
来源:互联网 发布:淘宝开店多久自动关闭 编辑:程序博客网 时间:2024/05/22 08:27
索引是数据库中一种快速查询数据的方法。索引的好处是加快对表中记录的查找或排序,但创建索引也是有代价的,比如增加了存储空间,如果某个表创建了很多索引,那么索引占用的空间有可能比数据表本身占用的空间还要大。另外,索引的创建也会对数据的插入与更新造成影响,因为此时索引也要随之更新。
postgresql支持下列几种索引:
B-tree索引:这是一种最常用的索引,适合处理等值查询和范围查询。
Hash索引:这种索引只能处理等值查询,并且索引的更新不会记录到WAL日志中,所以并不常用。
GiST索引:实际上是一种架构,可以在这种架构上实现很多不同的索引策略。
SP-GiST索引:空间分区GiST索引。通过一些新的索引算法,来提高GiST索引在某种情况下的性能。
GIN索引:反转索引。用于处理包含多个键的值。在数组类型、JSONB类型中应用较多。
GiST索引与GIN索引都会有一些操作符类,比如@>、<@等。
索引的创建会锁表,表只能查询,阻塞增删改操作。所以postgresql提供并发创建索引的方法,需要在create index 中加入concurrently选项,这时表可以进行数据更新,但postgresql会进行两次表扫描,所以这种方式创建索引会消耗更长时间。
对于频繁更新的数据表,定期重建索引可以提高表的性能,但是postgrsql的reindex并不提供concurrently选项,如果想在线重建索引,需要另想办法。postgresql支持同一个字段上创建两个索引,所以,我们可以利用concurrently并发创建一个新的索引,然后删除旧的索引。也就相当于reindex了。primary key也可以使用这种方法重建。
需要注意的是:并发创建索引的过程如果被强行取消的话,可能会生成一个无效索引,无效索引会导致更新变慢,若创建的是唯一索引,也可能会导致插入重复失败。
在创建索引的时候,有一个填充因子的选项(fillfactor),这个填充因子是一个范围在1-100的百分比值。指索引在创建后对page页的填充比例。当表中数据更新频繁的时候,填充因子尽量保持比较小的值。表中数据不更新或更新很少的情况下,填充因子设置较高的值。
原因分析:以后再加。
- PostgreSQL索引相关
- PostgreSQL索引创建方法及相关问题
- PostgreSQL索引
- Postgresql 索引
- postgresql索引
- postgresql数据库存储过程、索引、触发器相关SQL梳理
- Postgresql相关
- postgresql相关
- PostgreSql查看索引
- PostGresql索引深入分析
- PostgreSQL学习手册(索引)
- PostgreSQL 位图索引
- postgresql 索引类型
- postgresql 索引类型
- POSTGRESQL 数据库 索引
- PostgreSQL的索引选型
- PostgreSql重建索引
- PostgreSQL学习手册(索引)
- Windows Socket介绍
- 对象和方法之间的关系
- 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis
- 某互联网旅游公司面试 补充更新中
- 全屏,只显示状态栏,横竖屏
- PostgreSQL索引相关
- Spring 3整合Quartz 2实现定时任务一:常规整合
- 用jsmooth + inno生成exe并制作简单安装包
- Oracle客户端安装 plsql连接的时候 ORA-12154错误
- Inno setup 简单打包教程
- 用jsmooth + inno生成exe并制作简单安装包
- POJ-1094---Sorting It All Out(拓扑排序)
- 37、ifconfig命令
- C/C++之sizeof与strlen的区别