Joe*_*Joe 19 sql postgresql performance
我发现了许多关于调优数据库服务器的资源,但我对调整各个查询的工作并不多.
例如,在Oracle中,我可能会尝试添加提示来忽略索引或使用排序合并与相关联接,但除了在批量加载表时使用显式联接和建议之外,我在调优Postgres时找不到太多.
是否存在任何此类指南,以便我可以专注于调整运行最多和/或表现不佳的查询,希望不会对当前性能良好的查询产生负面影响?
我甚至很乐意找到一些东西来比较某些类型的查询相对于其他数据库的执行情况,所以我更清楚地知道要避免什么样的事情.
更新:
我应该提到,我在8天内把所有的Oracle DBA课程以及他们的数据建模和SQL调优课程都拿回来......所以我知道'EXPLAIN',但更多的是要告诉你出了什么问题.查询,不一定如何使它更好.(例如,'var = 1或var = 2'和'var in(1,2)'在生成执行计划时被认为是相同的?如果我用10个排列做什么怎么办?什么时候是多列?使用的索引?有没有办法让规划人员优化以获得最快的启动速度和最快的速度?从mySQL,Oracle或其他一些RDBMS迁移时,我可能会遇到什么样的"陷阱"?)
我可以编写任何复杂的查询数十种,如果不是数百种方式,我希望不必尝试所有这些,并通过反复试验找出哪种方法效果最好.我已经发现'SELECT count(*)'不会使用索引,但'SELECT count(primary_key)'将...可能是'有经验的SQL用户的PostgreSQL'那种解释了各种查询的文档避免,以及如何最好地重新编写它们,或者如何让规划人员更好地处理它们.
更新2:
我找到了不同的SQL实现的比较,其中包括PostgreSQL,DB2,MS-SQL,mySQL,Oracle和Informix,并解释了您可能尝试做的事情,方法和问题,以及他的参考部分链接到Oracle/SQL Server/DB2/Mckoi/MySQL数据库等价物(这是它的标题所暗示的)和wikibook SQL方言参考,它涵盖了人们贡献的任何内容(包括一些DB2,SQLite,mySQL,PostgreSQL,Firebird,Vituoso,Oracle,MS-SQL,Ingres和Linter).
有一个很好的在线工具可以获取输出EXPLAIN ANALYZE,并以图形方式显示关键部分(例如错误的估计,热点等)
http://explain.depesz.com/help
顺便说一句,我认为已发布的查询已公开,而"之前的解释"链接已被垃圾邮件发送.
http://www.postgresql.org/docs/current/static/indexes-examine.html
您可以给出提示:SET enable_indexscan TO false;会使PostgreSQL尝试不使用索引
为了解决您的观点,遗憾的是,在Postgres中调优查询的唯一方法就是调整其下的数据库.在oracle中,你可以逐个查询地设置所有这些选项,在过程中胜过优化器计划,但是在Postgres中,你完全受优化器的支配,无论好坏.