Mam tabelę z nieco ponad 1 miliardem wierszy danych z serii czasowej z fantastyczną wydajnością wstawiania, ale (czasami) strasznie wybraną wydajnością.Serwer SQL: wydajność danych szeregów czasowych
Tabela tblTrendDetails
(PK zamówić, jak pokazano)
PK TrendTime datetime
PK CavityId int
PK TrendValueId int
TrendValue real
Tabela stale wciągania nowych danych i oczyszczanie starych danych, a więc wprowadzać i usuwać wyniki powinny pozostawać żwawy.
Podczas wykonywania dalszych takich jak następujących, wydajność jest niska (30 s)
SELECT *
FROM tblTrendDetails
WHERE TrendTime BETWEEN @inMinTime AND @inMaxTime
AND CavityId = @inCavityId
AND TrendValueId = @inTrendId
Jeśli ponowne uruchomienie samego zapytania (z podobnym czasie, ale każdy @inCavityId
lub @inTrendId
) wydajność jest bardzo dobry (1 s). Liczniki wydajności pokazują, że dostęp do dysku jest sprawcą przy pierwszym uruchomieniu zapytania.
Wszelkie zalecenia dotyczące poprawy wydajności bez (znaczącego) niekorzystnego wpływu na wydajność wstawiania lub usuwania? Wszelkie sugestie (w tym całkowita zmiana bazy danych) są mile widziane.
Czy skupia się PK? Jakieś indeksy? –
@TimLehner Tak. PK jest skupiony. Nie (inne) indeksy. – pilotcam