我有一個有超過10億行時間序列數據的表,它具有夢幻般的插入性能,但是(有時)選擇性能非常糟糕。SQL Server:時間序列數據性能
表tblTrendDetails
(PK是有序如圖所示):
PK TrendTime datetime
PK CavityId int
PK TrendValueId int
TrendValue real
表不斷在新的數據拉和清除舊數據,因此插入和刪除的性能需要保持精力充沛。
當執行查詢時,如以下,性能差(30秒):
SELECT *
FROM tblTrendDetails
WHERE TrendTime BETWEEN @inMinTime AND @inMaxTime
AND CavityId = @inCavityId
AND TrendValueId = @inTrendId
如果我再次執行相同的查詢(具有類似的時間,但是任何@inCavityId
或@inTrendId
),性能是非常好(1秒)。性能計數器顯示,在第一次運行查詢時磁盤訪問是罪魁禍首。
關於如何提高性能而不會(顯着)影響插入或刪除性能的任何建議?任何建議(包括完全更改底層數據庫)都是受歡迎的。
PK羣集?任何索引? –
@TimLehner是的.. PK是成簇的。沒有(其他)索引。 – pilotcam