0

Webアプリケーションに6つのレポートがあります。15のテーブル結合に関する巨大なクエリを使用するすべてのレポートと、レポートをユーザーに提示する前にいくつかの計算を行うために再度ループするクエリ結果。

これは、レポートのロードに長い時間がかかります。私はJavaでMySQLを使用しています

この問題を解決するための最良の方法は何ですか?

  1. キャッシングが適切な場合、そのために利用できるオプションは何ですか?
  2. テーブルを作成し、必要なすべてのデータをそのテーブルに挿入することを計画しています。その後、レポートはそのテーブルにアクセスできます。可能であれば、そのテーブルにデータをロードするための最良の方法は何ですか?
  3. MongoDbまたは他のNoSqlDBでこの問題を修正できますか?
  4. または、これらの種類のことを行うための標準的な方法はありますか?
4

1 に答える 1

1

Explainクエリの前でを使用して、インデックスを使用しているかどうかを確認しJoinsます。うまくいけば、通常は同様の方法でテーブルを結合しているので、適切なインデックスを追加すると、かなり高速化されるはずです。

たとえば、あなたが持っていた場合、

Select carrots FROM veggies
JOIN fruits ON fruits.color = veggies.color
WHERE veggies.weight=.5

テーブルの列にインデックスを追加し、テーブルのcolor列にインデックスを追加する必要があります。fruitsweightveggies

于 2013-01-15T05:21:38.653 に答える