私は約1,300万行のテーブルを持っています。各行は、特定の日の特定の時間の特定のプロジェクトの特定のタイプの測定値を表します。非常に遅いクエリの結果セットのキャッシュ
私は、測定値のタイプに応じてこれらの値の合計または平均を求めるクエリを持っています。それは数分のように非常に遅いです。
このクエリの結果を利用する特定のレポートページがありますが、ページが読み込まれるまでに数分かかることはありません。これまでの私の解決策は、私がサマリーテーブルと呼んでいるものにクエリの結果をキャッシュすることでした。
サマリーテーブルをリフレッシュする夜間実行スクリプトが実行に時間がかかりすぎるという問題があります。私は一度に全体の要約テーブルをリフレッシュしようとしていませんが、それでも時間がかかります。 (「長すぎる」とは、エラーが発生し、リフレッシュジョブが完了していないことを意味します)。
私が直面している課題は間違ったやり方で起こった結果であり、解決策は、質問の実行時間を1%ずつ減らすためにいくつか調整するのではなく、まったく異なる方法で問題にアプローチすることです。
何か提案がありがとうございます。この質問を非常にうまくやっていないと謝ります。私はそれをより良く策定する方法がわかりません。明確化または詳細を提供することを喜んで。
これは、永遠に実行されるクエリの簡略化されたバージョンです。 (でもこの単純化されたバージョンは、かなり長い時間がかかります。)
select date(calc_dt),
project_id,
calculation_type_cd,
sum(result)
from calc_calculation_results
group by date(calc_dt),
project_id,
calculation_type_cd
毎晩仕事は、基本的には、このクエリの結果を受け取り、自分のサマリーテーブルにそれらを置くSELECT INTO
です。 result
列は、レポートの目的で興味を持っている値です。
あなたはどのインデックスを利用していますか?どのようなエラーが発生していますか?あなたはクエリがちょっと死ぬと言っていますか? –
本当にジェイソンは14Kの代理人と、あなたは本当にこのような不明瞭な質問は答えられないことを知っておくべきです。 – RiggsFolly
@TimBiegeleisen私は起こった[このエラー](http://stackoverflow.com/questions/5836623/getting-lock-wait-timeout-exceeded-try-restarting-transaction-even-though-im) 5年ほど前に別の質問をしてください。私のテーブル上の 'SHOW INDEX FROM'はいくつかの指標を示していますが、何が関連しているかを知る方法はわかりません。 –