Seite 1 von 1

Zusammensetzen eines Strings dauert sehr lange

Verfasst: Mi, 10.10.2007 08:33
von smguenther
Hallo,

ich setze mit dem folgenden Code die Ergebnisse einer SQL-Abrage in einem String zusammem um mir das Ergebnis am Ende in einem Dialog ausgeben zu lassen:

Code: Alles auswählen

	
    ResultSet=Statement.executeQuery(sSQL)
    DialogLibraries.LoadLibrary("Standard")
    Dlg=CreateUnoDialog(DialogLibraries.Standard.Dialog2)
    ps = Dlg.PosSize
    Dlg.setPosSize(ps.x,ps.y,"1380","900",com.sun.star.awt.PosSize.POSSIZE)
    Dlg.Model.Title="Ergebnisse"
    MyControl=Dlg.GetControl("ListBox1")      

	msgbox "Zwei"

  	i=0
	' Wenn ResultSet Daten enthält, werden die einzelnen Wert ermittelt
  	if not isNull(ResultSet) then
		while resultset.next
			'Zuweisen der einzelnen Felder zu Ergebnisstrings
			Werkstoff = ResultSet.getstring(2)
			Werkstueck = ResultSet.getstring(3)
			Anwendungsart = ResultSet.getstring(4)
			GewErgebnis = ResultSet.getstring(5)
			Maschine = ResultSet.getstring(6)
			Branche = ResultSet.getstring(7)
			Qualitaet = ResultSet.getstring(8)
			Abmessung = ResultSet.getstring(9)
			SANR = ResultSet.getstring(10)
			Einsatzparameter = ResultSet.getstring(11)
			SpezProduktanfor = ResultSet.getstring(12)
			Wettbewerb = ResultSet.getstring(13)
			Kommentare = ResultSet.getstring(14)			

			' Zusammensetzen der einzelnen Felder zu einem Ergebnisstring 
			Teilergebnis = Werkstoff & " == " & Werkstueck & " == " & Anwendungsart & " == " & GewErgebnis & " == " 
			Teilergebnis = Teilergebnis & Maschine & " == " & Branche & " == " & Qualitaet  & " == "
			Teilergebnis = Teilergebnis & Abmessung & " == " & SANR & " == " & Einsatzparameter & " == "
			Teilergebnis = Teilergebnis & SpezProduktanfor & " == " & Wettbewerb & " == " & Kommentare
						
			' Für jedes Ergebnis wird der Zähler um 1 erhöht
			i = i + 1
			MyControl.addItem(Teilergebnis,i)						
		wend
	Dlg.Execute()
	msgbox "Drei"
Zwischen dem Erscheinen der Messagebox "Zwei" und der Messagebox "Drei" vergeht mehr als eine Minute, wobei ich im schlimmsten Fall 1500 Datensätzen mit 16 Feldern zusammenfügen. Kann ich meinen Code noch optimieren oder ist dies schon das Optimum, was sich bei einer 2 GHz CPU und 512 MB RAM realisieren läßt?

Danke für jeden Hinweis & Tipp,

Stefan

Re: Zusammensetzen eines Strings dauert sehr lange

Verfasst: Mi, 10.10.2007 08:57
von Toxitom
Hey Stefan,

hmm, das wird schon so stimmen. Bei 1600 Datensätzen - also 1600 Schleifendurchgängen - da finde ich ca. 1 Minute noch richtig gut :-)

Das ist eben Basic - und die Wege sind lang..... Möglicherweise kommst du schneller, wenn du zuerst eine Abfrage in der Datenbank Engine erzeugts (also vielleicht mit Concat Strings verbinden) und dann die Abfrage als ganzes einliest?

Nur so eine Idee.

Viele Grüße
Thomas

Re: Zusammensetzen eines Strings dauert sehr lange

Verfasst: Mi, 10.10.2007 09:01
von komma4
Stefan,

---ungetestet---

* handelt es sich um die interne HSQLDN als DB engine?

* IIRC: es werden mit dem defaultwert max. 100 Datensätze abgerufen: hier lässt sich bestimmt auch noch etwas optimieren; siehe viewtopic.php?f=8&t=14334&p=57741&hilit ... set#p57741


* setze Deinen String schon in der Abfrage zusammen (Konkatinierung; Syntax je nach zu verwendendem SQL):

Code: Alles auswählen

SELECT  " A =="  && a && "B ==" && b ....
So erhälst Du nur eine Ergebnisspalte. Ich fürchte, dass erst die Zuweisung zu einer Variablen, dann deren Verkettung zu lange braucht.


Mal sehen, was der giftige Thomas dazu zu sagem hat :-)

Re: Zusammensetzen eines Strings dauert sehr lange

Verfasst: Mi, 10.10.2007 09:02
von komma4
und da hat er schon.

Also, ich finde das dauert zu lange.

...muss ins Büro, BFN