PostgreSql 索引使用技巧

索引种类详情可参考《PostgreSql 索引》

一、适合创建索引的场景

  • 经常与其他表进行连接的表,在连接字段上应该建索引。
  • 经常出现在 WHERE 子句中的字段,特别是大表的字段,应该建索引。
  • 经常出现在 ORDER BY 子句中的字段,应该建索引。
  • 经常出现在 GROUP BY 子句中的字段,应该建索引。

二、不适合创建索引的场景

  • 特别小的表(数据小于1000行),不适合创建索引。
  • dml 操作频繁,查询操作很少的表,不适合创建索引。
  • 查询中很少使用的列,不适合创建索引。
  • 选择率太高的列(过滤后超过表总数据量30%),不适合创建索引。
  • 大的文本字段,不适合创建索引。
  • 存在复合索引时,不适合再创建单列索引(单列查询使用复合索引时,优先考虑最左原则)。

三、删除无用索引

查询数据库中未使用过的索引,确认业务确实用不上后可删除。

--查找未使用过的索引
select indexrelid::regclass as index_name,
relid::regclass as table_name
from pg_stat_user_indexes join pg_index
using(indexrelid)
where idx_scan = 0
and indisunique is false;

--删除未使用过的索引
select 'drop index "'||indexrelid::regclass||'";' as dropsql
from pg_stat_user_indexes join pg_index
using(indexrelid)
where idx_scan = 0
and indisunique is false;

你可能感兴趣的:(PostgreSql,学习笔记,postgresql,数据库)