Hallo zusammen,
ich hab folgendes UPDATE-Statement:
Die Laufzeit beträgt unerwartete 23 Minuten! PLAN für KS und STAT sind NATURAL. (ist eine embedded Firebord 2). Zugriffskomponenten sind die IBObjects, respektive das Tool IB_SQL.
Die Tabellendefinition:
Knapp 200.000 Datensätze in der Tabelle.
Knapp 6500 Datensätze in der Tabelle.
Ich hatte eigentlich erwartet, dass er die Indizes verwenden würde. Dafür habe ich sie ja extra erzeugt. Muss ich vorgeben, welcher Index verwendet wird? Wenn ja, wie?
Oder muß ich auch noch einen Index für KURZ_NAME in der KUNDENSTAMM-Tabelle anlegen?
Insgesamt gibt es 6 ähnlicher Statements auszuführen... 23 Minuten ist schon zu lang, aber 2 Stunden...
Vielen Dank im voraus,
Jochen
ich hab folgendes UPDATE-Statement:
Code:
UPDATE STAT SET STAT.KD_NAME = (SELECT KS.KURZ_NAME FROM KUNDENSTAMM KS WHERE (KS.KUNDNR = STAT.KUNDNR))
Die Tabellendefinition:
Code:
CREATE TABLE STAT ( BUMO INTEGER NOT NULL , RGNR INTEGER NOT NULL , AUFNR INTEGER NOT NULL , LSNR INTEGER NOT NULL , RGPOS INTEGER NOT NULL , RGPOS_FOLGE INTEGER NOT NULL , RG_STATUS VARCHAR( 1 ) , RG_DATUM DATE , KUNDNR VARCHAR( 8 ) , KD_NAME VARCHAR( 20 ) , KD_ABC VARCHAR( 1 ) , POSID INTEGER , ARTNR VARCHAR( 25 ) , ARTBEZ1 VARCHAR( 30 ) , ARTBEZ2 VARCHAR( 30 ) , ARTBEZ3 VARCHAR( 30 ) , VK_NETTO DECIMAL ( 18, 2 ) , VK_ZUSCHLAG DECIMAL ( 18, 2 ) , RG_VERTNR VARCHAR( 8 ) , RG_VERT_NAME VARCHAR( 20 ) , KV_VERTNR VARCHAR( 8 ) , KV_VERT_NAME VARCHAR( 20 ) , PRIMARY KEY ( BUMO, RGNR, AUFNR, LSNR, RGPOS, RGPOS_FOLGE )); CREATE INDEX stidx1 ON STAT (KUNDNR); CREATE INDEX stidx2 ON STAT (KV_VERTNR); CREATE INDEX stidx3 ON STAT (RG_VERTNR);
Code:
CREATE TABLE KUNDENSTAMM ( KUNDNR VARCHAR( 8 ) NOT NULL , KURZ_NAME VARCHAR( 20 ) , ABC_ANALYSE VARCHAR( 1 ) , PRIMARY KEY ( KUNDNR ));
Ich hatte eigentlich erwartet, dass er die Indizes verwenden würde. Dafür habe ich sie ja extra erzeugt. Muss ich vorgeben, welcher Index verwendet wird? Wenn ja, wie?
Oder muß ich auch noch einen Index für KURZ_NAME in der KUNDENSTAMM-Tabelle anlegen?
Insgesamt gibt es 6 ähnlicher Statements auszuführen... 23 Minuten ist schon zu lang, aber 2 Stunden...
Vielen Dank im voraus,
Jochen
Comment