Einzelnen Beitrag anzeigen

Dumpfbacke

Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
329 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Index bei StoredProcezure

  Alt 1. Dez 2021, 17:17
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 'Aand 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 'Aand 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.
Tanja
  Mit Zitat antworten Zitat