有什么有效的方法来编写更快的查询,特别是在Postgres中?请不要包含一般良好的数据库实践(例如使用索引或标准化)。我正在寻找一些提示,比如派生表比子查询更快,或者使用python字符串函数比使用pgsql字符串函数更快。理想情况下,这个列表应该包括真实世界的例子和建议。
谢谢。
发布于 2009-07-23 04:18:11
确保定期吸尘。目前的自动真空系统在大多数情况下都做得很好,但定期运行全手动真空仍然是有帮助的(在我们的情况下,这大约每年发生一次)。
只有当表的统计数据可用时,才能可靠地使用索引。确保在对表进行重大更改(大量插入/删除)之后运行vacuum --analyze,以确保正确选择索引。
默认Postgres配置针对资源相对适中且磁盘速度较慢的系统进行了优化。如果您的系统具有更快的磁盘(可能)、更快的CPU (可能)或更多的RAM (几乎肯定),那么请确保根据这些调整各种参数。主要的事情是增加缓冲区大小,但是如果您有非常快的磁盘(特别是SSD),那么降低寻道时间的成本估计也是一个好主意。
我也有过一些在相当复杂的查询中使用稍微慢的连接的经验,但这些更难推广。一般来说,与使用更复杂的查询优化器(例如,Oracle或DB2)的db中可能要求的查询相比,更明确的查询是有帮助的。
发布于 2009-07-23 08:05:01
到目前为止,我发现的唯一牢不可破的规则是,没有牢不可破的规则。
有时子查询更快,有时连接更快。有时你需要plpgsql,有时你需要一些其他的pl/*。
通常最充分的建议是:
解释分析确保你的真空和分析(打开autovacuum)
发布于 2015-01-29 11:21:05
检查此页面上的所有链接,因为您正在进行实际的调优,因此最好知道所有选项的含义以及它们何时适用于您的配置。
https://stackoverflow.com/questions/1169565
复制相似问题