sql - PostgreSQL中如何手动更新表的统计数据

标签 sql performance postgresql statistics evaluation

在PostgreSQL中可以使用ANALYZE语句来收集表的统计数据。但是,我不想把这些数据实际插入到表中,我只是需要评估一些查询的成本,有没有在PostgreSQL中手动指定表的统计数据而不实际插入数据的方法?

最佳答案

我认为您正在混淆 ANALYZEEXPLAIN ANALYZE。有不同的东西。

如果您想要在不应用更改的情况下查询成本和时间,您唯一真正的选择是开始事务,在 EXPLAIN ANALYZE 下执行查询,然后 ROLLBACK.

这仍然执行查询,这意味着:

  • 消耗 CPU 时间和 I/O
  • 在此期间仍会获取并持有锁
  • 新行实际上写入表和索引,但从未标记为可见。它们在下一个 VACUUM 中被清除。

关于sql - PostgreSQL中如何手动更新表的统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21013352/

相关文章:

java - LibGDX 中纹理的多个实例?

r - 加速/替代引用先前计算行的 for 循环

sql - 当 case 语句返回 null postgresql 时处理空值

ruby-on-rails - 如何显示我已经在 Rails 中其他地方使用的数据库表中的数据

postgresql - 触发器 : execute query that fired it if condition is verifyed

sql - 如何在 SQL Server 上的触发器中编辑 INSERT 的值?

mysql - 有 3 列感兴趣,需要显示它们的图表,使用 MYSQL

mysql - CONCAT() inside GROUP_CONCAT() with count

sql - 哪一个更快/优化 - 内部连接或分区 - 以获得聚合数据?

python - Asyncio 使 HTTP 请求变慢?