什么是专门在 Postgres 中编写更快查询的有效方法?请不要包括一般好的数据库实践(例如使用索引或规范化)。我正在寻找类似派生表比子查询工作更快的提示,或者使用 python 字符串函数似乎比 pgsql 字符串函数更快。理想情况下,此列表将包含现实世界的示例和建议。
谢谢。
最佳答案
确保定期抽真空。在大多数情况下,当前的自动吸尘系统在这方面做得很好,但定期运行完全手动吸尘仍然有帮助(在我们的情况下,这种情况大约每年发生一次)。
只有当表的统计数据可用时,索引才能可靠地使用。确保在对表进行任何重大更改(大量插入/删除)后运行真空 --analyze,以确保正确选择索引。
默认的 Postgres 配置针对资源相对较少且磁盘速度较慢的系统进行了优化。如果您的系统具有更快的磁盘(可能)、更快的 CPU(可能)或更多 RAM(几乎可以肯定),那么请确保基于此调整各种参数。主要的事情是增加缓冲区大小,但如果您有极快的磁盘(尤其是 SSD),那么降低寻道时间的成本估计也是一个好主意。
我也有一些在相当复杂的查询中加入稍微慢一点的经验,但这些经验更难概括。一般而言,与具有更复杂查询优化器(例如,Oracle 或 DB2)的数据库中可能需要的相比,查询更明确会有所帮助。
关于postgresql - Postgres 调优,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1169565/