Nur Gedankenspiele:
Wenn Du die letzten zwei Stunden der Daten haben möchtest, könnte die Abfrage bei meiner geänderten ID in etwa so aussehen:
SQL-Code:
SELECT *
FROM LogTable
WHERE ID > (
SELECT current_value - 7200
FROM sys.sequences WHERE name = 'DeinSequenzname'
)
ORDER BY ID;
Für den 250ms-Kunden wären es dann halt 7200 * 4, was ja über Abfrageparameter zu realisieren wäre.
Hast Du nun diese Daten und möchtest nur alle 10 Sekunden das Neue "dazuholen" wäre die 7200 durch 10 zu ersetzen.
Die ID für einen beliebig weit zurückliegenden Zeitraum ließe sich entsprechend berechnen, so dass ein Index auf LogTime entfallen kann. (Immer vorausgesetzt, dass wirklich exakt ein Satz pro Sekunde geschrieben wird.) Per Top 7200 gibt es dann immer einen Zeitraum von exakt zwei Stunden. Hier ließe sich durch Änderung der 7200 auch ein beliebig kurzer oder langer Zeitraum ausgeben.
Beim
MSSQL-Server musst Du mit einer Fragmentierung bis etwa 30% nicht mit ernsthaften Performanceprobleme rechnen.
Wenn wir davon ausgehen, dass mein Vorschlag der Sortierung per ID und Sequenz umgesetzt wird: Ist dann der Zeit-Index überhaupt erforderlich?