sql - Postgres SQL 语句性能
问题描述
我有一个在 16 核/32 Gb WIndows Server 工作站上运行的 Postgres 实例。
我遵循了我在这样的地方看到的性能改进提示:https ://www.postgresql.org/docs/9.3/static/performance-tips.html 。
当我运行更新时:
analyze;
update amazon_v2
set states_id = amazon.states_id,
geom = amazon.geom
from amazon
where amazon_v2.fid = amazon.fid
其中fid是两个表中的主键,并且都有68M的记录,运行几乎需要一天的时间。
有什么办法可以提高这样的 SQL 语句的性能吗?例如,我应该编写一个存储过程来逐条处理它吗?
解决方案
您没有显示执行计划,但我敢打赌它可能正在执行Full Table Scanamazon_v2
并使用Index Seek on 。amazon
我在这里看不到如何提高性能,因为它已经接近最佳状态。我能想到的唯一想法是使用表分区和并行执行。
另一个完全不同的策略是只更新“修改”的行。也许您可以跟踪这些以避免每次都更新所有 6800 万行。
推荐阅读
- docker - 如何从 docker 映射 .NET 应用程序的更改并重建?
- php - Django URL 重定向所有 PHP 请求
- scala - 如果列有 NULL,如何在 Spark 中设置默认值?
- android - 如何在 Github 库中添加更改?
- vb.net - 将 Class 属性设为 Default 和 Shared
- r - Shiny 中数据表中的图标
- sql - 如何提高 Oracle DB 中 SQL 查询的性能
- c# - 从 C# 应用程序查询 Azure Log Analytics
- css - 多个@规则函数用逗号连接
- javascript - 有必要在 redux-persist 中实现案例 REHYDRATE 吗?