有什么(最好是开源的)软件可以分析一个PostgreSQL的EXPLAIN,并推荐必要的索引,以加快查询?
我几乎在几分钟前刚刚发现了这个: http : //explain.depesz.com/ 。 您可以粘贴EXPLAIN ANALYZE的结果,并向您显示哪里可能有问题(甚至是彩色编码)。
从帮助部分…
explain.depesz.com是查找慢查询的真正原因的工具。 通常,可以使用EXPLAIN ANALYZE查询; 并读取输出。 问题是并不是所有的输出部分都容易被任何人理解,并且在17.3ms执行的节点比在100ms运行的节点更快或者更慢是不明显的 – 考虑到第一个被执行的事实7倍。 要使用该网站,只需转到其第一页并粘贴在那里解释从您的psql输出。 这个输出可能看起来像这样。 上传后,你将被导向到页面显示parsing,很好(好吧,至less对我很好:)颜色化,把重点放在重要的部分。 这可能看起来像这样。 注意:彩色输出的URL是持久的,所以你可以简单地使用它来显示给其他人 – 例如 – 对freenode上irc频道#postgresql上的那些好人。 此图使用4种颜色标记重要的东西:白色背景 – 一切都很好黄色背景 – 给定节点令人担忧棕色背景 – 给定节点更令人担忧的是红色背景 – 给定节点非常令人担忧使用哪种颜色,是基于哪种模式您将使用:“独占”,“包含”或“行X”。
我没有意识到Postgres的任何工具可以在algorithm上做到这一点,在我看来,人脑(在开发环境中经常是一些实验)真的是唯一适合的工具。 涉及的因素很多,包括查询计划员是否会认为您的索引值得使用 – 这是由您的安装程序调整查询计划程序设置和相关表上的大小/统计信息所决定的S)。
我可以做的最好的build议是做一个EXPLAIN ANALYZE ( ANALYZE是重要的 – 它会给你查询和子计划运行时间),你自己看结果和攻击你看到的最大的数字。 你也许可以编写一个parsing器来打破EXPLAIN输出(特别是在使用JSON输出的9.0版本中),但我不知道有谁解决了这个问题(这基本上是MS-SQL的优化器所做的)
没有什么生产等级,但是好奇的是,有一个研究项目来执行这样的事情。 search“PostgreSQL索引顾问”。