gpt4 book ai didi

sql - PostgreSQL 查询调优指南?

转载 作者:行者123 更新时间:2023-11-29 11:09:52 24 4
gpt4 key购买 nike

我找到了许多关于调优数据库服务器的资源,但我没有找到太多关于调优单个查询的资源。

例如,在 Oracle 中,我可能会尝试添加提示以忽略索引或使用排序合并与相关连接,但除了 using explicit joins 之外,我找不到太多关于调优 Postgres 的信息。和建议 bulk loading tables .

是否存在任何此类指南,以便我可以专注于调整运行最频繁和/或性能不佳的查询,希望不会对当前性能良好的查询产生不利影响?

我什至很乐意找到一些东西来比较某些类型的查询相对于其他数据库的执行情况,这样我就可以更好地了解应该避免什么样的事情。

更新:

我应该提到,我在 8i 时代学习了所有 Oracle DBA 类(class)以及他们的数据建模和 SQL 调优类(class)......所以我知道“EXPLAIN”,但这更多是为了告诉你发生了什么查询错误,不一定如何使其更好。 (例如,在生成执行计划时,'while var=1 or var=2' 和 'while var in (1,2)' 是否被认为是相同的?如果我用 10 个排列来做怎么办?什么时候多列使用的索引?有没有办法让规划器针对最快的开始和最快的完成进行优化?从 mySQL、Oracle 或其他 RDBMS 迁移时,我可能会遇到什么样的“问题”?)

我可以编写任何复杂的查询,如果不是数百种的话,也有几十种,我希望不必尝试所有的方法并通过反复试验找出最有效的方法。我已经发现 'SELECT count(*)' 不会使用索引,但是 'SELECT count(primary_key)' 会......也许是“PostgreSQL for experienced SQL users”之类的文档,它解释了各种查询避免,以及如何最好地重写它们,或者如何让计划者更好地处理它们。

更新 2:

我找到了一个 Comparison of different SQL Implementations其中涵盖了 PostgreSQL、DB2、MS-SQL、mySQL、Oracle 和 Informix,并解释了您可能会尝试做的事情是否、如何做以及可能遇到的问题,他的引用部分链接到 Oracle / SQL Server / DB2 / Mckoi /MySQL Database Equivalents (这是它的标题所暗示的)和 wikibook SQL Dialects Reference它涵盖了人们贡献的所有内容(包括一些 DB2、SQLite、mySQL、PostgreSQL、Firebird、Vituoso、Oracle、MS-SQL、Ingres 和 Linter)。

最佳答案

至于表现不佳的查询 - 请解释分析并阅读。

您可以将解释分析输出放在网站上,例如 explain.depesz.com - 它将帮助您找到真正花费最多时间的元素。

关于sql - PostgreSQL 查询调优指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com