-1

SQL Server 2008データベースがあり、約50列の単一のテーブルがあります。主キーは日時です。これ以上正規化することはできません。これは、数秒ごとに異なるセンサーからの値を格納するテーブルであるため、intとdecimalsです。そのため、この1か月間、56万行近くが挿入されました。私の質問は、データが多すぎるためにパフォーマンスの問題が発生し始めるのはいつですか?

具体的には、これまでの私の要件は、先月を(グラフで)表示することです(この質問の問題ではありません)。先月だけDBから取得する場合、PK(インデックス付き)によってフィルタリングされたクエリは、テーブルがどれだけ大きくなるかは重要ですか?

Ups、long rant :)入力ありがとうございます!

4

3 に答える 3

1

テーブルに対して実行しているクエリが、スキャンやテーブルスキャンではなく、インデックスシークを行っていることを確認してください。これを通知するクエリ プランを SSMS に生成させることができます。シークが行われている限り、数億行を処理しても優れたパフォーマンスを維持できます。

于 2012-10-31T13:17:04.400 に答える
1

テーブルが 1 か月あたり 50 万以上増加すると、これはすぐに大きなテーブルに成長します。1 年で 600 万行以上になります。必要なクエリは単純で、インデックス付きの PK を使用してデータをフィルター処理するように見えますが、パフォーマンスの問題が発生する可能性があると思います。

たとえば、データ (カウント、合計) に対して集計されたクエリを実行したり、前の月との比較を提供したり、過去 x か月の傾向の変化を示したりする必要があるでしょう。

次のことを検討してください。

  • 古いデータを削除するパージ戦略。
  • インジケーター テーブルを作成し、チャートに必要な集計情報を要約します。
于 2012-10-31T13:30:39.323 に答える
1

上記のいくつかの提案に加えて、IO チャーンを軽減するために、日付フィールド (PK) がクラスター化されたインデックスであることを確認することをお勧めします。このようにして、先月のすべてのレコードが連続し、簡単にアクセスできるようになります。

于 2012-10-31T14:04:35.617 に答える