私はPostgreSQL上にいくつかの非常に大きなテーブル(イベントとイベントの測定値付き)を持つデータベースを持っています。測定の日付範囲と1つのイベントタイプについては、Invantive SQLを使用して平均期間を計算したいと考えています。ゆっくりとグループ化する関数を調整するInventive SQL
イベント(約5 GB、簡体字):
- ID
- TYPE_CODE
event_measurements、約50ギガバイト:
- のevent_id
- は を開始
- は私が
select avg(ended - started) from events join event_measurements on events.id = event_measurements.event_id where events.type_code = '...'
のようなクエリを実行すると、それは内部メモリのGB単位を消費する時間走る
を終えました。
外部キーインデックスを含め、必要なインデックスがすべて整っています。
セッションI/Oから、Invantive SQLは最初に詳細をダウンロードし、クライアントでグループ化を実行することがわかりました。これは小規模では問題ありませんが、この場合、このようなクエリでは5分のようなネイティブパフォーマンスが必要です。
周囲のクエリにはInvantive SQLが必要です。したがって、データベース上の「Force native SQL」スイッチはオプションではありません。
「ネイティブSQLを強制する」に切り替えることなく、このクエリのパフォーマンスを向上させる方法を教えてください。
http://wiki.postgresql.org/wiki/SlowQueryQuestions –
Postgresでビューを作成し、ビューから結果にアクセスします。 –