SQL Performance-Problem
Von: Dieter Valicek (it-germany@gmx.de) [Profil]
Datum: 06.11.2009 14:10
Message-ID: <hd178v$9d0$1@online.de>
Newsgroup: de.comp.datenbanken.mysql
Datum: 06.11.2009 14:10
Message-ID: <hd178v$9d0$1@online.de>
Newsgroup: de.comp.datenbanken.mysql
Hallo!
Ich muss die Tabelleninhalte von einer Tabelle ("Conv") bearbeiten
und das Ergebnis in einer anderen Tabelle (result) abspeichern.
"Conv" hat etwa 35.000 Zeilen, "result" etwa 20.000
Die Tabbellen sehen etwa soaus:
CREATE TABLE Conv (
Ab VARCHAR (25),
Txt VARCHAR (250),
TxtGer VARCHAR (200),
Bes VARCHAR (3000),
Quellen VARCHAR (1000)
);
CREATE TABLE result (
Ab varchar(42) COLLATE latin1_general_cs DEFAULT NULL,
Txt varchar(3500) COLLATE latin1_general_cs DEFAULT NULL)
ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs;
Die Arbeit macht die folgende Prozedur:
-- ************************
-- ************************
DELIMITER $$
CREATE PROCEDURE `P_ToWord2`()
BEGIN
DECLARE vAb VARCHAR(42);
DECLARE vTxt VARCHAR(300);
DECLARE vTxtGer VARCHAR(300);
DECLARE vBes VARCHAR(3000);
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR
SELECT Ab, Txt, TxtGer, Bes
FROM Conv
ORDER BY Ab,
LENGTH (Quellen) - LENGTH (REPLACE(Quellen,';','')) desc,
Txt;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO vAb, vTxt, vTxtGer, vBes;
IF (EXISTS (SELECT Ab FROM Result WHERE Ab = vAb ))
THEN
UPDATE Result
SET Txt = CONCAT (Txt, '||', vTxt, vTxtGer, vBes)
WHERE Ab = vAb;
ELSE
INSERT INTO Result VALUES (vAb, CONCAT(vTxt, vTxtGer, vBes));
END IF;
UNTIL done END REPEAT;
DROP TABLE Conv;
END $$
DELIMITER ;
-- ************************
-- ************************
Mein Problem ist die Schleife mit dem Cursor, das Ding läuft über
zwei Stunden. Kann mir jemand einen Tipp geben, wie ich die Sache
beschleunigen kann?
Besten Dank
Dieter
PS: Von MySQL habe ich nicht viel Ahnung, bisher habe ich
überwiegend mit MS-SQL gearbeitet.
[ Auf dieses Posting antworten ]Antworten
- Christian Kirsch (06.11.2009 14:35)
- Dieter Valicek (06.11.2009 15:21)
- Stefan Dreyer (06.11.2009 15:59)
- Christian Kirsch (06.11.2009 16:39)
- Stefan Dreyer (06.11.2009 14:55)
- Dieter Valicek (06.11.2009 15:47)
- Christian Kirsch (06.11.2009 16:20)
- Dieter Valicek (06.11.2009 16:52)
- Christian Kirsch (06.11.2009 17:00)
- Dieter Valicek (06.11.2009 17:30)
- Claus Reibenstein (06.11.2009 17:20)
- Dieter Nöth (06.11.2009 23:12)
- Dieter Valicek (07.11.2009 10:53)
- Dieter Valicek (06.11.2009 15:59)
- Christian Kirsch (06.11.2009 16:25)
- Dieter Valicek (06.11.2009 17:01)
