Il tuo indice in realtà non supporta la query poiché la query non fa riferimento alla colonna chiave principale. Quindi, deve scansionare l'intera tabella con o senza questo indice. Potresti considerare un indice solo su DataPointDate per supportare questa operazione di eliminazione se è qualcosa che esegui spesso.
Se DataPointID è una colonna IDENTITY e DataPointDate viene inserito in sequenza, potresti anche considerare questa variazione:
DECLARE @maxID INT;
SELECT @maxID = MAX(DataPointID)
FROM dbo.tblTSS_DataCollection
WHERE [DatapointDate] < DATEADD(D, -7, GETDATE());
DELETE dbo.tblTSS_DataCollection
WHERE DataPointID <= @maxID;
Un'altra cosa che potresti considerare di fare (se è l'eliminazione e non la scansione che contribuisce alla lentezza) è (a) assicurarti che il tuo registro abbia abbastanza spazio per ospitare l'eliminazione e non ti stia uccidendo con un mucchio di autogrow, e ( b) eseguire i lavori in lotti:
BEGIN TRANSACTION;
SELECT 1;
WHILE @@ROWCOUNT > 0
BEGIN
COMMIT TRANSACTION;
DELETE TOP (1000) dbo.tblTSS_DataCollection WHERE ...
END
COMMIT TRANSACTION;