例如,在Oracle中,我可能会尝试添加提示来忽略索引或使用排序合并和相关联接,但是在using explicit joins以外的调整Postgres上找不到很多,而在bulk loading tables时我建议。
有任何这样的指南存在,所以我可以专注于调优大多数运行和/或表现不佳的查询,希望不会对目前性能很好的查询产生不利影响?
我甚至会高兴地找到一些比较某些类型的查询相对于其他数据库执行的方式进行比较,所以我有一个更好的线索来避免什么样的事情。
更新:
我应该提到,我在8天内把所有的Oracle DBA类以及数据建模和sql调优类都带回来,所以我知道“EXPLAIN”,但是更多的是告诉你,查询,不一定如何使其更好。 (例如,当var = 1或var = 2’和’while var in(1,2)’在生成执行计划时被认为是相同的?如果我用10个排列做什么?什么时候是多列使用的索引?有没有办法让计划者优化最快的启动与最快的完成?从MysqL,Oracle或其他一些RDBMS移动时可能遇到什么样的“陷阱”?)
我可以编写任何复杂的查询数十个,如果不是数百种方式,我希望不必尝试所有,找到哪一个最好的尝试和错误。我已经发现’SELECT count(*)’不会使用索引,但是’SELECT count(primary_key)’将…可能是一个“经验丰富的sql用户的Postgresql”文档,解释了各种查询避免和如何最好地重写它们,或者如何让计划者更好地处理它们。
更新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)。