Es hat leider etwas länger gedauert. Ich habe mal nur die beiden benötigten Felder in eine extra Tabelle in eine extra Datenbak geschoben. Dann die beiden Felder aus der original Tabelle mit den Werten befüllt. Hier die gewünschten Daten.
Delphi-Quellcode:
SET SQL DIALECT 3;0
/******************************************************************************/
/**** Tables ****/
/******************************************************************************/
CREATE TABLE TABELLE1 (
FELD1 VARCHAR(25),
FELD2 VARCHAR(4)
);
/******************************************************************************/
/**** Indices ****/
/******************************************************************************/
CREATE
INDEX TABELLE1_IDX1
ON TABELLE1 (FELD1, FELD2);
/******************************************************************************/
/**** Privileges ****/
/******************************************************************************/
Die Procedure Feld1 ist ein VarChar25 und Feld2 ist ein Varschar4
Delphi-Quellcode:
begin
/* Procedure Text */
for
Select TB.Feld1, TB.feld2
From Tabelle1 TB
into :Feld1,Feld2
do
suspend;
end
Die Abfrage auf die Tabelle selbst
Delphi-Quellcode:
Select Feld1,Feld2
from tabelle1
where Feld1 starting with 'A' and Feld2 starting with '7'
Group by Feld1, Feld2
Ergibt unter Performace Analysis
Delphi-Quellcode:
Plan
PLAN (TABELLE1 ORDER TABELLE1_IDX1 INDEX (TABELLE1_IDX1))
------ Performance info ------
Prepare time = 0ms
Execute time = 4s 968ms
Avg fetch time = 261,47 ms
Current memory = 12.261.872
Max memory = 133.414.344
Memory buffers = 1.024
Reads from disk to cache = 31.451
Writes from cache to disk = 0
Fetches from cache = 8.549.654
Die Abfrage auf die Procedure
Delphi-Quellcode:
Select Feld1,Feld2
from NEW_PROCEDURE
where Feld1 starting with 'A' and Feld2 starting with '7'
Group by Feld1, Feld2
Ergibt unter Performace Analysis
Delphi-Quellcode:
Plan
PLAN SORT ((TB NATURAL))
------ Performance info ------
Prepare time = 0ms
Execute time = 8m 56s 250ms
Avg fetch time = 28.223,68 ms
Current memory = 29.439.032
Max memory = 133.414.344
Memory buffers = 1.024
Reads from disk to cache = 680.390
Writes from cache to disk = 0
Fetches from cache = 174.652.879
Da ja hier die Tabelle nur noch zwei Felder hat geht es vermutlich etwas besser aber der Index wird hier einfach nicht genutzt. Wie gesagt ich habe hier eine Tabelle mit nur den zwei Felder angelegt und nur diese befüllt. Das ganze ich schon merkwürde und ich weiß nicht warum er hier keinen Index nehemen möchte.
Ja die Kiste ist nicht die schnellste aber für das was wir damit machen recht es uns noch aus. Werden wir irgendwann mal tauschen müssen.
Vielen Dank schon einmal für die Hilfe.