如何解决在 Excel/PowerQuery 中使用 psqlodbc 的性能问题
我使用 psqlODBC 和 PowerQuery 将数据从 Postgresql (12.4) 加载到 Microsoft Excel。最近我遇到了无法解释的性能问题。某些函数需要很长时间(15 分钟或更长时间)才能通过 ODBC 提取数据。有些功能只需几秒钟。从命令行使用 pgAdmin、Beekeeper 或 psql 运行相同的函数时,它们的执行时间都不超过 500 毫秒。
我发现这个 answer 说明聚合可能是在客户端完成的。这将是非常糟糕的,因为表包含几百万行,我只想将聚合的列发回。有人可以提供更多信息吗?我找不到任何相关信息。
到目前为止我尝试过的
- 我用视图替换了一个函数,这似乎解决了问题。但是,这不是通用的解决方案,因为有些函数包含无法在视图中完成的逻辑。
- 我使用
pg_stat_statements
和auto_explain
来查明函数是否存在问题。我没有发现任何可疑之处。如前所述,该问题仅在使用 psqlODBC 时出现,因此我希望问题出在任何地方。 - 修改 psqlODBC config 的参数。到目前为止没有成功。
详情
CREATE FUNCTION func(parameter integer) RETURNS TABLE(<col1> <type1>,...)
LANGUAGE 'plpgsql' COST 100 STABLE ParaLLEL UNSAFE ROWS 500
AS $BODY$
BEGIN
RETURN QUERY
<SELECT ...>
END
我使用函数而不是视图,因为其中一些包含无法在视图中完成的逻辑。
服务器正在运行 Postgresql 12.4
,客户端使用 psqlODBC 12.02
,Excel 2016(最新)。
我很感谢这里的每一条建议,我可以如何解决我的问题。
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。