PostgreSQL 索引使用分析

2024-05-05

是否有工具或方法可以分析 Postgres,并确定应创建哪些缺失的索引,以及应删除哪些未使用的索引?我在使用 SQLServer 的“分析器”工具执行此操作方面有一些经验,但我不知道 Postgres 中是否包含类似的工具。


我喜欢这样来查找丢失的索引:

SELECT
  relname                                               AS TableName,
  to_char(seq_scan, '999,999,999,999')                  AS TotalSeqScan,
  to_char(idx_scan, '999,999,999,999')                  AS TotalIndexScan,
  to_char(n_live_tup, '999,999,999,999')                AS TableRows,
  pg_size_pretty(pg_relation_size(relname :: regclass)) AS TableSize
FROM pg_stat_all_tables
WHERE schemaname = 'public'
      AND 50 * seq_scan > idx_scan -- more than 2%
      AND n_live_tup > 10000
      AND pg_relation_size(relname :: regclass) > 5000000
ORDER BY relname ASC;

这会检查序列扫描是否多于索引扫描。如果表很小,它就会被忽略,因为 Postgres 似乎更喜欢对它们进行序列扫描。

上面的查询确实揭示了缺失的索引。

下一步是检测缺失的组合索引。我想这并不容易,但可行。也许分析缓慢的查询......我听说pg_stat_语句 https://www.postgresql.org/docs/current/static/pgstatstatements.html有帮助...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL 索引使用分析 的相关文章

  • 这个 SQL 语句在 Linq 中的等价物是什么?

    我需要将此 SQL 语句移植到 LINQ SELECT f ID as IdFlight Tarif 1 as Tarif f Time f TimeOfArrival sl Name as FromLoc sl Country as Fr
  • Mysql UUID_SHORT() 与 UUID() 相当吗

    如果您愿意的话 请快速提出问题或意见 我需要为数据库表生成一些 UUID 自动递增密钥不会减少它 因为我还需要密钥在数据库和系统中保持唯一 UUID 工作正常 但其输出对于行将导出到的某些系统来说太长 UUID SHORT 做得很好 我已经
  • 有什么好的方法可以在 SQL Server 中构建逗号分隔列表吗?

    在 Firebird 中 有一个聚合称为List http www firebirdsql org refdocs langrefupd21 aggrfunc list html它将多个结果转换为逗号分隔的字符串 SQL Server 中似
  • 何时计划 (SELECT) 查询?

    在 PostgreSQL 中 什么时候计划 SELECT 查询 Is it 在报表准备时 或者 在处理 SELECT 开始时 或者 别的东西 我问的原因是 Stackoverflow 上有一个问题 相同的查询 两种不同的方式 性能截然不同
  • Postgres 多重连接

    这是一个 postgres 数据库 我试图从品种表中提取狗的品种名称 卡斯罗 拉布拉多等 以根据动物表中的外键进行显示 我的问题是动物表有两个外键指向这个单一品种表 并且我的查询不断出错 第一个品种名称将根据左连接返回 但第二个品种名称无法
  • 仅使用 SQL 进行 Base 36 到 Base 10 的转换

    出现了一种情况 我需要在 SQL 语句的上下文中执行以 36 为基数到以 10 为基数的转换 Oracle 9 或 Oracle 10 中似乎没有内置任何内容来解决此类问题 我的 Google Fu 和 AskTom 建议创建一个 pl s
  • Postgres 性能问题

    我们正在运行 Postgres 9 1 3 最近我们的一台服务器开始遇到重大性能问题 我们的查询在一段时间内运行良好 但截至 8 月 1 日 速度显着减慢 看起来大多数有问题的查询都是 Select 查询 带有 count 的查询尤其糟糕
  • 在sql server中生成下一个序列号

    我需要生成一个序列号用作主键 在遗留系统中 我想知道以下解决方案在竞争条件下是否会遇到并发问题 CREATE TABLE SequenceGenerator Sequence INT INSERT INTO SequenceGenerato
  • T-SQL参数嗅探重新编译计划

    我有 SQL 命令 exec sp executesql N SELECT TOP 10 FROM mytableView WHERE Name LIKE Value0 ORDER BY Id DESC N Value0 varchar 5
  • 如何在oracle中预测和转义单引号'

    假设我有一个列值aaa gh它会在 oracle 中抛出错误 提示 sql 命令未正确结束 我的问题是如果我不知道有多少 在我的价值范围内 我如何才能安全地逃脱它们 最好的方法是使用引用字符串文字技术 http lalitkumarb wo
  • 了解自加入

    我正在练习自加入这是我在编写查询时不明白的事情 我有一张桌子 employee 员工表包含三个记录 id employee manager id 1 Ola NULL 2 Ahmed 1 3 Tove 1 最后一列 manager id 引
  • 执行 SELECT 或 INSERT

    我想写一些类似的东西CASE以我想要的方式在 PostgreSQL 中声明SELECT从表中 如果什么也没找到 我想INSERT改为放入表中 我的示例表allocated ideas看起来像这样 challenge id user id i
  • SQL Server 如何查看日期是否为当前月份?

    我有一个Ticket Date格式为的列YYYY MM DD HH MI SS 我想检查是否Ticket date是在当前月份 到目前为止我有 Ticket date gt 2015 04 01 and Ticket date lt 201
  • CHAR(64) 或 BINARY(32) 在 SQL SERVER 中存储 SHA256 哈希

    我正在讨论在 SQL Server 中存储 SHA256 哈希时使用哪种数据类型 应该是 CHAR 64 还是 BINARY 32 该列将成为唯一聚集索引的一部分 我知道此时我可能会吹毛求疵 但是我想第一次就把这件事做好 而且我知道有时原始
  • 将数据类型 varchar 转换为 int 时出错

    我试图使用基于 varchar 类型的 Name 列的输入值的存储过程返回 item 表的 ItemId 列值 但是每当我将任何值传递给存储过程时 它都会返回一个错误 将数据类型 varchar 转换为 int 时出错 create pro
  • 两个表中两个字段的总和

    我的数据库中有四个表 如下所示 表格发票 invcid customerid invoicedate tblInvc详细信息 ID invcid item itemprice itemquantity tblPay payid invcid
  • Bool类型返回规则

    我使用 dapper ORM 所以我使用两个规则Query
  • 如何使用JSqlParser向sql添加where条件?

    我想用JSqlParser向sql添加where条件 例如 Before select from test table where a 1 group by c After select from test table where a 1
  • 根据同一 select 语句中先前计算的行(或列)计算新行(或列)

    我正在尝试根据年度销售增长预期来计算年度预期销售量 在一张表中 我有实际销量 create table Sales ProductId int Year int GrowthRate float insert into Sales valu
  • 在 SQL 中用加号 (+) 显示正结果

    我有以下查询 SELECT CONVERT DECIMAL 11 1 SUM Column 1000 1 AS NAME FROM Table 我有 1000 1 的原因是我希望结果以千为单位显示并反转 负值作为正值 反之亦然 只有一位小数

随机推荐

  • 为什么 T-SQL 块即使不应该执行也会给出错误?

    我正在编写一个 看似 直接的 SQL 片段 它在确保列存在后删除该列 问题 如果该列不存在 则代码insideIF 子句抱怨它找不到该列 出色地 doh 这就是为什么它位于 IF 子句内 所以我的问题是 为什么一段不应该执行的代码会出错 这
  • 如何不自动取消引用 Google App Engine 中的 db.ReferenceProperty?

    假设我有 class Foo db Model bar db ReferenceProperty Bar foo Foo all get 有没有办法让我在不向数据存储区进行查询的情况下执行 foo bar 操作 文档说foo bar将是一个
  • 如何将 Font Awesome 4.3.0 与 JSF 集成?

    我已经尝试过这个方法 如何将 webjars org 中的 Font Awesome 与 JSF 结合使用 https stackoverflow com questions 18891768 how to use font awesome
  • Spark:如何从spark shell运行spark文件

    我正在使用CDH 5 2 我能够使用火花外壳运行命令 如何运行包含 Spark 命令的文件 file spark 有没有办法在没有 sbt 的情况下在 CDH 5 2 中运行 编译 scala 程序 在命令行中 您可以使用 spark sh
  • 如何覆盖 attr_protected?

    我的 STI 实施如下 class Automobile lt ActiveRecord Base end class Car lt Automobile end class Truck lt Automobile end class Us
  • 如何将不同层的核心动画一个接一个地链接起来?

    我有一个启用分页的scrollView和N个页面 它们是作为scrollView的子视图的UIView 我正在尝试执行以下操作 用户滚动到第 n 页 此时 之前添加到第 n 页的 7 个 CALayers 即 到页面 scrollView
  • C# 中加密的数据太长,无法在 Java 中解密

    我有一个用 Java 编写的服务器 它在将其发送到客户端之前将其 RSA 密钥转换为 NET 使用的 XML 格式 public String getPublicKeyXML try KeyFactory factory KeyFactor
  • MERGE 命令导致序列号出现间隙

    我试图利用 MERGE 命令来填充 Snowflake 中的维度 为了实现代理键 我创建了一个默认为序列号的列 每当插入新行时该序列号就会自动递增 我在其他数据仓库平台上尝试了类似的方法 但从未引起任何问题 但是 我注意到 每当我在 Sno
  • 是否可以使用 LINQ 检查列表中的所有数字是否单调递增?

    我感兴趣的是 在 LINQ 中是否有一种方法可以检查列表中的所有数字是否单调递增 Example List
  • 如何在 Vaadin 中禁用浏览器缓存

    我的问题很短 希望很容易解决 我怎样才能完全禁用我的浏览器缓存用vaadin实现的webservice 我想完全禁用缓存 因为当我尝试进行一些 PDF 流式传输并在浏览器中显示它们时遇到问题 我已经阅读了有关我的问题的解决方案 例如这里 使
  • Android 密钥库停止工作

    就在最近 我在密钥存储方面遇到了问题 我知道已经有很多关于这个问题的问题了 我已经阅读了所有这些内容并疯狂地用谷歌搜索 Error keytool error java io IOException Keystore was tampere
  • 将外部 jar 放在 JAVA_HOME/lib/ext 目录中是一件坏事吗?

    我们有一个在 JRE 环境中运行的应用程序 该应用程序使用了一些外部 jar 我们已将它们放在 JAVA HOME lib ext 文件夹中 这对我们来说已经工作了很多年 但最近一位新程序员加入了我们的团队 他似乎强调这是一件多么糟糕的事情
  • `knitr` 可以抑制 sql 块中的执行或输出吗?

    下面的文档运行 sql 并显示结果 我不希望显示任何输出 要么不运行该块 要么隐藏输出 有没有办法做到这一点 output html document Hide SQL Output First set up a temporary dat
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key
  • 在 IE9 中,如何使用 watir-webdriver 绕过无效证书屏幕?

    这是显示 该网站的安全证书有问题 的屏幕 标头 这是我尝试单击的链接的代码 tr td nbsp td td align left valign middle h4 img src red shield png border 0 alt N
  • Oracle 中的 TO_Char 数字格式模型

    我不完全理解如何使用 to char 函数将数字转换为具有适当格式模型的字符串 实际数字具有以下格式 使用逗号作为小数点分隔符 始终为 5 个小数 整数最多可达 6 可能是无限的 但目前绝不会超过 6 数字可以是正数或负数 数字可以以 0
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 在Android上保存文件时避免因中断而丢失数据?

    我想知道其他人在 Android 上保存文件时使用什么策略来避免数据丢失 我有几个游戏应用程序 本质上 它们可能会在用户暂停 onPause 时保存游戏状态 保存游戏 这在 99 99 的情况下有效 但每隔一段时间我就会收到一个保存游戏的例
  • 为什么 jQuery 不使用 requestAnimationFrame?

    部分浏览器支持requestAnimationFrame 那么为什么不使用它呢 毕竟已经是自 Google Chrome 10 起受支持 https developer mozilla org en DOM window mozReques
  • PostgreSQL 索引使用分析

    是否有工具或方法可以分析 Postgres 并确定应创建哪些缺失的索引 以及应删除哪些未使用的索引 我在使用 SQLServer 的 分析器 工具执行此操作方面有一些经验 但我不知道 Postgres 中是否包含类似的工具 我喜欢这样来查找