0

ソース テーブルのメジャー列の合計集計を含む新しいテーブルを作成する必要があります。ソース テーブルは非常に巨大です。

例えば。ソース テーブル

Category | Product | Sales
A        | P1      | 100 
B        | P2      | 200
C        | P3      | 300

クエリは次のようになります:

SELECT Category, 
       Product, 
       SUM(Sales) 
FROM source_table 
GROUP BY Category.

where 条件はありません。

索引付けはプロセスのスピードアップに役立ちますか?
クエリを高速化するための代替メカニズムはありますか?

4

2 に答える 2

0

インデックスはトリッキーなツールです。テーブルの列にインデックスを追加する予定がある場合は、少なくとも次のことを考慮する必要があります。

1- この列にはいくつの異なる値がありますか。2-レコードの総数と異なる値の数の比率はどうですか。3- この列に where、group by、または order by 句を適用する頻度。

@Kaseyの回答が示すように、表示されるものについては、カテゴリ列にインデックスを追加できますが、その列にあるさまざまな値の数によって異なります。

于 2013-01-09T12:07:04.963 に答える
0

Category は GROUP BY 句に含まれているため、Category にインデックスを追加すると役立つ場合があります。ただし、完全なテーブル ダンプを実行しているため、処理が遅くなる可能性があります。

おそらくより良い戦略は、販売レポート用の新しいテーブルを作成し、ビジネス ニーズに基づいてデータを入力することです。毎日しか更新できない場合は、ストアド プロシージャを夜間に実行して再設定するようにスケジュールします。テーブルの現在の状態を反映する必要がある場合は、トリガーを使用して、ベース テーブルが更新されるときにレポート テーブルを更新できます。または、アプリケーション レベルで別のクエリを実行して、ベース テーブルが更新されたときにレポート テーブルを更新することもできます。

于 2013-01-08T18:51:25.720 に答える