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;

最近更新

  1. TCP协议是安全的吗?

    2023-12-28 22:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-28 22:44:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-28 22:44:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-28 22:44:02       20 阅读

热门阅读

  1. 音视频编码基础知识

    2023-12-28 22:44:02       40 阅读
  2. 【DB2】Maxlocks和防止锁升级

    2023-12-28 22:44:02       39 阅读
  3. 力扣labuladong——一刷day80

    2023-12-28 22:44:02       33 阅读
  4. 面试问题整理若干

    2023-12-28 22:44:02       41 阅读
  5. 观察者(模板)的一点体会

    2023-12-28 22:44:02       32 阅读
  6. 大数据知识分享:大数据产业必知概念

    2023-12-28 22:44:02       39 阅读
  7. SQL备忘--子查询与ALL/ANY运算符

    2023-12-28 22:44:02       38 阅读
  8. 幸运树。。

    2023-12-28 22:44:02       38 阅读
  9. Oracle中varchar2和nvarchar2的区别

    2023-12-28 22:44:02       37 阅读
  10. Qt中保存和还原Widget状态的入门指南

    2023-12-28 22:44:02       44 阅读
  11. Python 虚拟环境工具及使用总结

    2023-12-28 22:44:02       29 阅读