PostgreSQLでのクエリのパフォーマンスに関するヘルプが必要です。それはインデックスに関連しているようです。 timestamp
によってtype
PostgreSQLでの不規則なインデックス付きクエリのパフォーマンス
- フィルタ、昇順:
このクエリは、
SELECT * FROM the_table WHERE type = 'some_type' ORDER BY timestamp LIMIT 20
インデックス:
CREATE INDEX the_table_timestamp_index ON the_table(timestamp);
CREATE INDEX the_table_type_index ON the_table(type);
type
フィールドの値は、約11の異なる文字列のうちの1つです。
問題は、クエリが実行に数分かかるというtype
のいくつかの値を除いて、たった数ミリ秒でほとんどO(log n)時間で実行されているようです。これらの例のクエリで
秒は30分以上かかりながら、最初は実行するだけで、数ミリ秒かかる:
SELECT * FROM the_table WHERE type = 'goq' ORDER BY timestamp LIMIT 20
SELECT * FROM the_table WHERE type = 'csp' ORDER BY timestamp LIMIT 20
私たちは持っているインデックスがないことを、約90%の確信を持って、疑います正しいもの。私は、this similar question about index performanceを読んだ後、私たちが必要とするのは、type
とtimestamp
を超える複合インデックスです。
クエリは、私が実行していることを計画して現在地:
- Expected performance, type-specific index (i.e. new index with the type = 'csq' in the
WHERE
clause)。 - Slowest, problematic case, indexes as described above.
- Fast case, same indexes as above.
おかげであなたの助けのために非常に多くの!すべてのポインタは本当に感謝されます!
インデックスのサイズはどのくらいですか?そしてデータセットのサイズ? – Gothmog