postgresql_索引

1.简介:

索引是用于加速从数据库检索数据的特殊查找表。

索引为出现在索引列中的每个值创建一个条目。

2.特点:

索引使用SELECT查询和WHERE子句加速数据输出,但是会减慢使用INSERTUPDATE语句输入的数据。

3.创建:

CREATE INDEX index_name ON table_name;

单列索引,CREATE INDEX index_name ON table_name (column_name);

多列索引,CREATE INDEX index_name ON table_name (column1_name, column2_name);

唯一索引【该字段不能重复】,CREATE UNIQUE INDEX index_name on table_name (column_name);

4.删除:

DROP INDEX index_name;

5.规则:

应该避免在小表上使用索引。

不要为具有频繁,大批量更新或插入操作的表创建索引。

索引不应用于包含大量NULL值的列。

不要在经常操作(修改)的列上创建索引。

6.类型:

根据算法不同,索引分为:

B-tree,多层,排列成某些属性的等式,及以下运算符:<,>,=,between in,null,like

Hash,简单的=,不支持多列索引

GiSTSP-GiST,几何数据

GIN,线性数据

缺省为B-tree索引。

7.组成:

排序规则模式,

排序规则,

运算符类别模式,

运算符类别,

排序顺序, DESC倒叙,ASC正序

nulls排序,null在not null之前,或者在not null之后

8.分析:

explain analyze

关闭全表扫描seq scan(set session enable_seqscan = false;)

关闭索引扫描index scan(set session enable_indexscan = false;)

关闭索引条目扫描bitmap scan(set session enable_bitmapscan = false;)

数据量小时,seq scan比index scan有效。index scan发生两次I/O:1.读取索引块,2.读取数据块。

PS,即使存在index,也可能会因为数据量小被系统优化成seq scan。

9.扫描种类:

Bitmap heap scan:合并索引访问的结果子集时会用到这种方式 ,通常用到 "or","and"时,出现Bitmap heap scan;

index scan:普通的索引扫描, 一次只读一条索引项,一个 PAGE面有可能被多次访问;

bitmap scan :一次性将满足条件的索引项全部取出,并在内存中进行排序, 然后根据取出的索引项访问表数据;

Seq Scan:从表的第一行开始顺序扫描,一直扫描到最后满足查询条件的记录。

10.自主优化:

pgsql也会根据自身判定,做一部分自主优化,比如:

设置了索引,但是未被使用;

未设置索引,但是却使用了索引;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Postgresql提供了多种类型的索引来优化查询性能。其中包括B树索引、GIN索引和其他几种类型的索引。B树索引是最常见和常用的索引类型之一。它可以用于支持等值查询、范围查询和排序操作。在Postgresql中,创建B树索引可以提高查询效率,特别是在大型表上。 此外,Postgresql还提供了GIN索引,也称为反转索引。GIN索引适用于一维数组的数据,可以满足大部分应用场景的需求。GIN索引可以进行自定义配置,提供了更灵活的索引选项。 总结来说,Postgresql提供了多种类型的索引,每种索引都有适用的应用场景。在使用时,我们需要根据业务需求和查询特点选择合适的索引类型,以提高查询效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [postgresql创建索引](https://download.csdn.net/download/baidu_14872325/7238247)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Postgresql杂谈 04—Postgresql中的五种常规索引](https://blog.csdn.net/lzhui1987/article/details/118875025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值