3

SQL Server2008R2をバックエンドデータベースとして使用するレポートソリューションを設計しています。データベーススキーマはかなり単純です。PKで名前が付けられた1つのテーブルと、で呼び出すための外部キーの関連付けをCalls持つ名前が付けられた1つのテーブル。 CallIdEventsfk_CallId

各呼び出しには少なくとも6〜7のイベントがあり、dbには1日あたり3000以上の呼び出しが記録されています。
この関係がクエリのパフォーマンスにどの程度の影響を与えるかについて少し心配しています。inner join数百万行()を超えるテーブルで使用Eventsするとパフォーマンスが大幅に低下する場合は、結合を使用しないCallerIdフィールドをテーブルに追加できます(ただし、関連するテーブルに関する他の情報は失われます)。 EventsCalls

一般的に、パフォーマンスに問題がないことを確認するために他にできる手順はありますか?

4

1 に答える 1

3

テーブルのによって異なります。

実際、少なくとも最初の10年間は​​、1日あたり3000回の通話はそれほど大きなデータではありません8-)

しかし

常にすべてのデータをクエリしたい場合-アプリケーションの設計に問題があり、特定の場所でパフォーマンスを向上させても、間違った設計のすべての短所を解決することはできません。

手順は次のとおりです。

  • 適切なインデックス付けを確認します(少なくとも、結合された(およびクエリされた)列のインデックス付け)
  • あなたのクエリをチェックしてください-彼らはあなたが望むデータをあなたにもたらしますか?あなたが欲しい唯一のデータ?
于 2012-01-09T08:02:43.493 に答える