postgresql定位未使用的索引(unused index)

unused index会导致不必要的io开销,如写操作(insert、update)期间,必须维护所有index
1.鉴于pg_stat_reset()函数能够reset统计信息到0,查找unused index时,先参考pg_stat_database的stats_reset的栏位的reset时间,只有一定时间跨度的统计信息才有意义

select stats_reset from pg_stat_database

2.之后可以结合pg_index、pg_stat_user_index视图查找未使用的index

select indrelid::regclass tab_name,pi.indexrelid::regclass unused_index,idx_scan
from
pg_index pi,pg_stat_user_indexes psui
where pi.indexrelid=psui.indexrelid and not indisunique and
idx_scan=0

3.注意,定位到未使用的index后,不要急于直接drop这些index,先使用如下sql去mark这些index为invalid,再花一段时间观察应用程序行为,如自从mark index invalid后,是否遇到效能问题等,确认无问题后,可使用concurrently去drop索引

UPDATE pg_index SET indisvalid = false
WHERE indexrelid::regclass::text IN ( < Unused indexes name> );
PostgreSQL 中的 SP-GiST 是一种通用的空间数据结构,它可以用于实现各种数据类型的索引,例如文本、图像等非空间数据类型。SP-GiST 索引相对于 B-tree 索引来说,具有更好的可扩展性和更高的查询效率,特别是在处理大规模数据集时,表现更为优异。 下面是在 PostgreSQL使用 SP-GiST 索引的一些步骤: 1. 创建扩展 在使用 SP-GiST 索引之前,需要先创建 SP-GiST 扩展。可以使用如下 SQL 语句创建 SP-GiST 扩展: ``` CREATE EXTENSION IF NOT EXISTS "spgist"; ``` 2. 创建索引 在创建 SP-GiST 索引时,需要指定 SP-GiST 算法的名称和需要索引的列。例如,下面的 SQL 语句创建了一个 SP-GiST 索引,用于对表中的 jsonb 类型的列 data 进行索引: ``` CREATE INDEX idx_data_spgist ON tablename USING spgist(data); ``` 3. 查询优化 在使用 SP-GiST 索引时,需要根据具体的业务需求进行查询优化。通常情况下,可以使用 SP-GiST 索引提供的查询算子来实现高效的查询。例如,对于 jsonb 类型的列 data,可以使用 SP-GiST 索引提供的 @> 查询算子来进行查询: ``` SELECT * FROM tablename WHERE data @> '{"key": "value"}'; ``` 这样可以快速地查询出符合条件的记录。 总的来说,SP-GiST 索引可以用于优化各种非空间数据类型的查询,例如文本、图像、JSON 等。在使用 SP-GiST 索引时,需要根据具体的业务需求进行查询优化,以实现最佳的查询效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值