1,000 万件のレコードを含むテーブルがあり、すべてをメモリにロードする必要があります (キャッシュ アプリケーション)。
テーブル構造は次のようになります。
CREATE TABLE [TestTable] (
[Id] [int] IDENTITY(1,1) NOT NULL,
[RefId1] [int] NOT NULL,
[RefId2] [int] NOT NULL,
[RefId3] [int] NULL,
[Credits] [money] NOT NULL,
CONSTRAINT [PK_Table] PRIMARY KEY CLUSTERED ( [Id] ),
CONSTRAINT [UK_Table] UNIQUE NONCLUSTERED ([RefId1],[RefId2],[RefId3])
)
テーブル サイズ: 364080 KB (データ) - 341648 KB (インデックス)
単純な選択でこの量のデータをロードするには、約 2 分かかります。
使用済みを選択:
SELECT Id, RefId1, Credits, RefId3
FROM TestTable WITH (NOLOCK)
これは SQL Server の通常の速度パフォーマンスですか? このクエリを高速化するにはどうすればよいですか?
クエリはキャッシュ アプリケーションと SSMS からテストされ、結果は実質的に同じでした。
32 GB RAM と SSD ディスク RAID を備えた 16 コア サーバーで SQL Server 2008 R2 Std を使用しています。他のアプリケーションや SQL サーバーへの接続はありません。
パフォーマンス カウンターから、データベースが完全にメモリ内にあるため、キュー/ディスク/CPU の使用がないことがわかります。クエリの実行時に表示される唯一の情報は、SQL と SSMS の間の約 6 MB/秒の遅いネットワーク トラフィックです。
すべてのテストは、ローカル マシンで実行されました。
これをスピードアップする方法、または問題を探す場所に関する提案はありますか?