SQL Befehl auf ADS schneller bekommen

Advantage Database Server

Moderator: Moderatoren

Antworten
sammler0002
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Mi, 23. Dez 2015 22:46
Hat sich bedankt: 21 Mal
Danksagung erhalten: 4 Mal

SQL Befehl auf ADS schneller bekommen

Beitrag von sammler0002 »

Moin,

wenn ich eine SQL Abfrage direkt im Data Architect ausführe, ist diese deutlich schneller, als wenn ich sie über ein XBase Programm ausführen lasse.

Ich verbinde mich via Dictionary zum ADS

Code: Alles auswählen

    cDict := "DBE=ADSDBE;SERVER=\\Server\Main.add"
    SoSession := dacSession():New( cDict  
Um dann die Abfrage zu erstellen

Code: Alles auswählen

   oStmt := DacSqlStatement(SoSession):fromChar(cSQL)
   oStmt:build():query(,"SOPO")
Bei einfachen Abfragen funktioniert das auch relativ fix, bei größeren Abfragen dauert es aber teilweise echt ewig. Gibt es eine Möglichkeit das zu beschleunigen?

P.S. Ich wusste nicht ob ADS oder SQL richtig ist, bitte nicht direkt steinigen wenn es eher in den SQL Bereich gehört hätte (Sie wars.. Sie wars ...)
Grüße von Philipp
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 852
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von Marcus Herz »

Man muss da aufpassen: Der ARC zeigt oft nur soviele Sätze an wie in dem Anzeigebreich Platz haben. Ein SQL wird dann auch nur für diese Anzahl Sätze evaluiert.
Springt man ans Ende der Liste, kann auch der ARC viel Zeit benötigen. Das fällt vor allem dann auf, wenn eine restriktive WHERE Bedingung oder ein Join enthalten ist
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
sammler0002
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Mi, 23. Dez 2015 22:46
Hat sich bedankt: 21 Mal
Danksagung erhalten: 4 Mal

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von sammler0002 »

Ahhh okay, dann hab ich mich da wohl täuschen lassen...
Grüße von Philipp
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 852
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von Marcus Herz »

Man kann ADS zwingen, das gesamte SQL Ergebnis zu berechnen:
- eine ORDER BY anhängen
- oder ein count:

Code: Alles auswählen

select count(*) from ( <deinsql> ) p
In beiden Fällen muss das gesamte Ergebnis ermittelt werden. ADSDBE frägt mit Sicherheit LASTREC ab, dazu muss auch das gesamte Ergebnis vom ADS ermittelt werden. Daher die vermeintliche Performance vom Arc
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2126
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 75 Mal

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von Werner_Bayern »

I. d. R. liegt der Data Architect auch auf dem Server, wo der ADS direkt läuft und Dein Programm läuft am Client? Dann kommt u. a. auch noch die Zeit für die Übertragung der Daten übers Netz mit dazu.
es grüßt

Werner

<when the music is over, turn off the lights!>
sammler0002
UDF-Programmierer
UDF-Programmierer
Beiträge: 63
Registriert: Mi, 23. Dez 2015 22:46
Hat sich bedankt: 21 Mal
Danksagung erhalten: 4 Mal

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von sammler0002 »

Spannend, man lernt ja nie aus. Danke Euch.

@Werner in meinem Fall laufen Data Architect und das Programm beide auf dem gleichen Client. Ich vermute mal, dass ich mich tatsächlich von der Anzeige habe täuschen lassen. Ich werde später mal testen wie es sich mit einem "order by" verhält, so wie Marcus erwähnt hatte.
Grüße von Philipp
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 651
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: SQL Befehl auf ADS schneller bekommen

Beitrag von nightcrawler »

evtl andere DLLS? Xbase hat lange Uralt-Bibliotheken ausgeliefert. ace32.dll, axcws32.dll.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Antworten