什么构成了 PostgreSQL pg_stat_user_tables 中 seq_scan 列的一个令人担忧的大值

问题描述 投票:0回答:1

我正在尝试确定 Postgres 数据库中的哪些表缺少索引,我正在查看

pg_stat_user_tables
。我读到
seq_scan
列中的“大”值是缺少索引的指标,但我正在寻找有关“大”的更清晰的信息。

它是绝对值,还是取决于表中的行数?例如,运行此查询时,我看到的

seq_scan
tup_per_scan
的最大值分别为 7,617,366 和 3,253,864。

SELECT relname,
       seq_scan,
       seq_tup_read / seq_scan AS tup_per_scan
FROM pg_stat_user_tables
WHERE seq_scan > 0;

谢谢!

sql postgresql database-indexes
1个回答
0
投票

首先,您必须考虑收集这些统计数据的时间:

SELECT datname, stats_reset
FROM pg_stat_database;

这 700 万次扫描是在一个月内还是在五年内进行,结果会有所不同。

我会将这一发现与

pg_stat_statements
中具有最高
total_exec_time
的查询相关联:如果您的其中一个最重要的语句涉及此查询,请查看执行计划。也许索引可以减少您的总体资源消耗。

© www.soinside.com 2019 - 2024. All rights reserved.