Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.582 Beiträge
 
Delphi 7 Professional
 
#25

AW: Datenlogger mit MSSQL und Index-Fragmentierung

  Alt Gestern, 10:01
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?
  Mit Zitat antworten Zitat