在Postgres中专门编写更快速查询的有效方法是什么?请不要包括通常良好的数据库实践(例如使用索引或规范化)。我正在寻找像派生表的工作速度比子查询更快或使用python字符串函数似乎比pgsql字符串函数更快的提示。理想情况下,此列表将包括现实世界的示例和建议。
感谢。
答案 0 :(得分:8)
到目前为止,我发现的唯一牢不可破的规则是没有牢不可破的规则。
有时子查询更快,有时加入更快。有时你想要plpgsql,有时你想要一些其他的pl /*.
通常最充分的建议:
答案 1 :(得分:7)
确保定期吸尘。在大多数情况下,目前的自动真空系统在这方面表现相当不错,但定期运行全手动真空仍然有帮助(在我们的情况下,这种情况大约每年发生一次)。
如果统计数据可用于表,则仅可靠地使用索引。确保在对表进行任何重大更改(大量插入/删除)之后运行真空 - 分析,以确保正确选择索引。
默认的Postgres配置针对具有相对适中的资源和慢速磁盘的系统进行了优化。如果你的系统有更快的磁盘(可能),更快的CPU(可能),或更多的RAM(几乎可以肯定),那么请确保根据它调整各种参数。主要是增加缓冲区大小,但如果你有极快的磁盘(特别是SSD),那么降低寻道时间的成本估算也是一个好主意。
我在相当复杂的查询中也有一些稍微缓慢的连接经验,但这些更难以概括。通常,与具有更复杂的查询优化器(例如,Oracle或DB2)的数据库中可能需要的相比,查询更明确是有帮助的。
答案 2 :(得分:1)
查看此页面上的所有链接,因为您正在进行实际调整,最好知道所有选项的含义以及它们何时适用于您的配置。