私は、10億行を少し上回るテーブルを持っていますが、それは素晴らしい挿入パフォーマンスを備えていますが、時にはひどい選択パフォーマンスです。 (PK示すように順序付けられている)SQL Server:時系列データのパフォーマンス
表tblTrendDetails
:テーブルには、継続的に新しいデータで引っ張って、古いデータを消去するので、挿入および削除され
PK TrendTime datetime
PK CavityId int
PK TrendValueId int
TrendValue real
パフォーマンスがてきぱきままにする必要があります。
、以下、性能が悪い(30秒)としてクエリ実行:私は(同様の時間で、任意@inCavityId
又は@inTrendId
)再度同じクエリを実行すると、パフォーマンスが非常にある
SELECT *
FROM tblTrendDetails
WHERE TrendTime BETWEEN @inMinTime AND @inMaxTime
AND CavityId = @inCavityId
AND TrendValueId = @inTrendId
を良い(1秒)。パフォーマンスカウンタは、ディスクアクセスが最初にクエリが実行されたときの原因であることを示しています。
挿入または削除のパフォーマンスに(著しく)悪影響を及ぼすことなくパフォーマンスを向上させる方法に関する推奨事項はありますか?任意の提案(基礎となるデータベースを完全に変更することを含む)は歓迎されます。
PKはクラスタ化されていますか?すべてのインデックス? –
@TimLehnerはい.. PKがクラスタ化されています。いいえ(他の)インデックス。 – pilotcam