インデックスの提案で説明する


10

PostgreSQL EXPLAINを分析でき、クエリを高速化するために必要なインデックスを推奨できる(オープンソースが望ましい)ソフトウェアはありますか?

回答:


6

私は文字通り数分前にこれを見つけました:http : //explain.depesz.com/。EXPLAIN ANALYZEの結果を貼り付けると、問題がある可能性がある場所がわかります(色分けされています)。

ヘルプセクションから...

Explain.depesz.comは、クエリが遅い原因を見つけるためのツールです。通常、EXPLAIN ANALYZEクエリを使用します。出力を読み取ります。問題は、出力のすべての部分が誰でも簡単に理解できるわけではなく、17.3ミリ秒で実行されるノードが100ミリ秒で実行されるノードよりも速いか遅いかが常に明確であるとは限らないことです。回。このサイトを使用するには、最初のページに移動して、psqlからのアナライズ出力の説明をそこに貼り付けます。この出力は次のようになります。アップロードすると、解析されたページが表示され、重要な部分を強調するために色分けされています。これは次のようになります。補足:色分けされた出力のURLは永続的です。そのため、他のユーザーにそれを表示するために単に使用できます。たとえば、freenodeのircチャネル#postgresqlのいい人向けです。このグラフは、重要なものをマークするために4色を使用します:白い背景-すべてが細かい黄色の背景です-与えられたノードは茶色の背景を心配しています-与えられたノードは赤い背景を心配しています-与えられたノードは非常に心配していますどの色が使用され、どのモードに基づいて選択されています「Exclusive」、「Inclusive」、または「Rows X」を使用します。


1

私はこれをアルゴリズム的に行うPostgresのツールを知りません。私の意見では、人間の脳(そして多くの場合、開発環境での少しの実験)が、ここで唯一適切なツールです。クエリプランナーがインデックスを使用する価値があると考えるかどうかなど、多くの要因が関係しています。これは、インストールがクエリプランナーの設定を調整した方法と関連するテーブルのサイズ/統計によって決定されるものです( s)。

私ができる最良の推奨事項は、EXPLAIN ANALYZE(これANALYZEは重要です-クエリとサブプランの実行時間を提供します)、自分で結果を確認し、最初に表示される最大の数を攻撃することです。おそらくパーサーを記述してEXPLAIN出力を分解することができます(特に9.0でJSON出力を使用)が、これに取り組んだ人はまだ知りません(これは基本的にMS-SQLのオプティマイザが行うことです...)


0

プロダクショングレードはありませんが、好奇心が強い人のために、そのようなものを実装するための研究プロジェクトがあります。「PostgreSQLインデックスアドバイザー」を検索します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.