Zusammensetzen eines Strings dauert sehr lange

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zusammensetzen eines Strings dauert sehr lange

Re: Zusammensetzen eines Strings dauert sehr lange

von komma4 » Mi, 10.10.2007 09:02

und da hat er schon.

Also, ich finde das dauert zu lange.

...muss ins Büro, BFN

Re: Zusammensetzen eines Strings dauert sehr lange

von komma4 » Mi, 10.10.2007 09:01

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

von Toxitom » Mi, 10.10.2007 08:57

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

Zusammensetzen eines Strings dauert sehr lange

von smguenther » Mi, 10.10.2007 08:33

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

Nach oben