2

以下の SQL クエリで問題が発生しています...サーバーの CPU をペグし、最終的に結果を返さずにタイムアウトします。クエリの形式は問題ありませんか?

BD

SELECT dfa_data_dump.date,
       campaignname,
       placementgroup,
       placementstartdate,
       placementenddate,
       placementgrouptotalbookedunits,
       placementgroupid,
       sitename,
       dfa_data_dump.placementid,
       placement,
       dfa_data_dump.placementrate,
       placement_rates.ratetype,
       placementtotalbookedunits,
       placementsize,
       time_dimension.month,
       Sum(impressionsdelivered),
       Sum(clicksrecorded),
       Sum(totalactivities),
       Sum(totalcost)
FROM   dfa_data_dump
       INNER JOIN time_dimension
               ON time_dimension.date = dfa_data_dump.date
       INNER JOIN placement_rates
               ON placement_rates.placementid = dfa_data_dump.placementid
GROUP  BY dfa_data_dump.date,
          campaignname,
          placementgroup,
          placementgrouptotalbookedunits,
          placementgroupid,
          sitename,
          placementid,
          placement,
          placementrate,
          placementtotalbookedunits,
          placementsize,
          time_dimension.month  
4

1 に答える 1

1

あなたのクエリはCGIで作成されたものであり、タイムアウトしてmysqlクエリを強制終了していると思います。CGI からの直接データベースは、クエリが高速でなければならないことを意味します。そうしないと、この問題に遭遇します。

そのため、高速化するか、フェッチをタイム クリティカルではないバックエンド スクリプトに入れる必要があります。

おそらく、インデックスを使用してパフォーマンスを劇的に向上させることができます。最初に、結合する列にインデックスを付けます。それを修正するにはそれで十分かもしれません。次は GROUP BY 列を確認することです。かなりの数の GROUP BY 列があり、これがあなたを悩ませている可能性があります。グループ化するデータの量と、そこに表示される異なる値の数によって少し異なります。

于 2012-10-03T21:41:42.230 に答える