Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.297 Beiträge
 
Delphi 12 Athens
 
#1

Firebird Leistung Index Max

  Alt 2. Mai 2014, 07:31
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Guten Morgen alle...

Ich hätte da gern mal ein Verständnisproblem...

Gegebenheiten:

Tabelle mit 21 Mio Datensätzen
Delphi-Quellcode:
CREATE TABLE T_RECORD_DATA (
    F_PARAMETER_ID ID /* ID = INTEGER NOT NULL */,
    F_TIMESTAMP_UNIX INTEGER_NORMAL /* INTEGER_NORMAL = INTEGER NOT NULL */,
    F_POWER_STATE INTEGER_NORMAL /* INTEGER_NORMAL = INTEGER NOT NULL */,
    F_VALUE STRING10 /* STRING10 = VARCHAR(10) NOT NULL */
Indizies
Delphi-Quellcode:
ALTER TABLE T_RECORD_DATA ADD CONSTRAINT FK_T_RECORD_DATA_1 FOREIGN KEY (F_PARAMETER_ID) REFERENCES T_DEVICE_PARAMETERS (ID) ON DELETE CASCADE ON UPDATE CASCADE;

CREATE INDEX T_RECORD_DATA_IDX1 ON T_RECORD_DATA (F_TIMESTAMP_UNIX);
... alle Datensätze bei bestehendem Index eingefügt.

SQL
select first 10 * from T_RECORD_DATA where F_timestamp_unix = (select max(F_timestamp_unix) from t_record_data) Problem:
Ausführungszeit = 36s 926ms ... absolut inakzeptabel

Leistungsanalyse:
siehe Bild und
Delphi-Quellcode:
------ Leistungsinformation ------
Prepare time = 31ms
Ausführungszeit = 36s 926ms
Avg fetch time = 3.692,60 ms
Current memory = 17.699.664
Max memory = 17.901.376
Memory buffers = 1.024
Reads from disk to cache = 82.953
Writes from cache to disk = 0
Fetches from cache = 43.527.070
Die Frage:
Warum greift der Index nicht? Wo ist der Denkfehler?
Miniaturansicht angehängter Grafiken
leistung.png  

Geändert von haentschman ( 2. Mai 2014 um 08:38 Uhr)
  Mit Zitat antworten Zitat