Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi bde schneller als firebird (https://www.delphipraxis.net/69662-bde-schneller-als-firebird.html)

sancho1980 18. Mai 2006 10:57

Datenbank: firebird • Zugriff über: ibx, ibexpert

bde schneller als firebird
 
nochmal ne andere frage:

bin dabei eine db-anwendung, die auf bde und paradox basiert, für firebird umzuschreiben

außerdem gibs dazu noch ne kleine software, die dann die datenbanken ins neue format konvertiert..jetzt hab ich mir mal testweise eine ziemlich große datenbank im alten format (mit zufallswerten) generieren lassen und sie ins neue format konvertiert und dann nach einträgen gesucht und dabei fällt auf, dass die suche unter der bde merklich schneller geht (ok, die datenbankstruktur ist im neuen format auch etwas komplexer aber die direkte suche nach indizierten feldern sollte das ja nicht beeinträchtigen, oder)

woran kann denn das liegen, is das normal?

achsoo: firebord als lokaler server

danke

martin

Bernhard Geyer 18. Mai 2006 11:00

Re: bde schneller als firebird
 
Wie ist dein Code für den Firebird-Zugriff (Beispiel)? Methoden die bei BDE bzw. lokalen DB's schnell sind sind u.U. bei SQL-Datenbanken nicht optimal.

RavenIV 18. Mai 2006 11:11

Re: bde schneller als firebird
 
hast Du mal versucht, mit anderen Komponenten (z.B. ZEOS) auf deinen FB zuzugreifen.
Die ibexpert-Sachen sind nicht allzu optimiert.

hast du firebird als Server laufen oder als embedded?
bei einem direkten Vergleich zu BDE solltest du embedded wählen.

sancho1980 18. Mai 2006 11:15

Re: bde schneller als firebird
 
net erschrecken: das ist eine terminologiedatenbank..sucht man nach einem bestimmten asterm, dann wird sicherheitshalber (falls der asterm nicht enthalten ist) auch der vorgänger und soviele nachfolger geholt, bis 20 datensätze insgesamt da sind..asterm ist indiziert, ebenso wie sämtliche fremdschlüssel...(hier suche nach asterm 'peter'):
SQL-Code:
select * from (
      select * from (
            select d.id, d.asterm, d.asabk, d.asprgm, d.assem, d.zsterm, d.zsabk, d.zsprgm, d.zssem, d.datum, d.proj, d.rev, d.upddatum, d.asdef, d.zsdef, d.asaudio, d.asvideo, d.asabbildung, d.zsabbildung, d.zsaudio, d.zsvideo, asmain.asterm as asverw, zsmain.zsterm as zsverw, a.aut as aut, ua.aut as updaut, aslit.qcode as asqcode, zslit.qcode as zsqcode from dicentries d left join dicentries asmain on d.asverw = asmain.id left join dicentries zsmain on d.zsverw = zsmain.id left join aut a on d.aut = a.id left join aut ua on d.updaut = ua.id left join lit aslit on d.asqcode = aslit.id left join lit zslit on d.zsqcode = zslit.id where d.asterm < 'peter' order by asterm descending rows 1
               )
      union
      select d.id, d.asterm, d.asabk, d.asprgm, d.assem, d.zsterm, d.zsabk, d.zsprgm, d.zssem, d.datum, d.proj, d.rev, d.upddatum, d.asdef, d.zsdef, d.asaudio, d.asvideo, d.asabbildung, d.zsabbildung, d.zsaudio, d.zsvideo, asmain.asterm as asverw, zsmain.zsterm as zsverw, a.aut as aut, ua.aut as updaut, aslit.qcode as asqcode, zslit.qcode as zsqcode from dicentries d left join dicentries asmain on d.asverw = asmain.id left join dicentries zsmain on d.zsverw = zsmain.id left join aut a on d.aut = a.id left join aut ua on d.updaut = ua.id left join lit aslit on d.asqcode = aslit.id left join lit zslit on d.zsqcode = zslit.id where d.asterm = 'peter'
      union
      select * from (
            select * from (
                  select d.id, d.asterm, d.asabk, d.asprgm, d.assem, d.zsterm, d.zsabk, d.zsprgm, d.zssem, d.datum, d.proj, d.rev, d.upddatum, d.asdef, d.zsdef, d.asaudio, d.asvideo, d.asabbildung, d.zsabbildung, d.zsaudio, d.zsvideo, asmain.asterm as asverw, zsmain.zsterm as zsverw, a.aut as aut, ua.aut as updaut, aslit.qcode as asqcode, zslit.qcode as zsqcode from dicentries d left join dicentries asmain on d.asverw = asmain.id left join dicentries zsmain on d.zsverw = zsmain.id left join aut a on d.aut = a.id left join aut ua on d.updaut = ua.id left join lit aslit on d.asqcode = aslit.id left join lit zslit on d.zsqcode = zslit.id where d.asterm > 'peter' order by asterm ascending rows 20
                     )
               )
         ) order by asterm ascending rows 20

RavenIV 18. Mai 2006 11:18

Re: bde schneller als firebird
 
also wenn deine Abfrage so kompliziert ist, solltest Du vielleicht mal das DB-Design überdenken...

sancho1980 18. Mai 2006 11:19

Re: bde schneller als firebird
 
Zitat:

hast du firebird als Server laufen oder als embedded?
Du meinst, ob ich firebird als service oder als application laufen habe?
beim firebird service control steht "as a service"
wieso beeinträchtigt das die geschwindigkeit von suchen?

Bernhard Geyer 18. Mai 2006 11:20

Re: bde schneller als firebird
 
OK. Immerhin schon SQL und nicht mit Locate oder ähnlichen gearbeitet.

Wie sind denn die Zeiten?

RavenIV 18. Mai 2006 11:24

Re: bde schneller als firebird
 
Zitat:

Zitat von sancho1980
Zitat:

hast du firebird als Server laufen oder als embedded?
Du meinst, ob ich firebird als service oder als application laufen habe?
beim firebird service control steht "as a service"
wieso beeinträchtigt das die geschwindigkeit von suchen?

der firebird-Server hat sicher andere Antwortzeiten als die embedded Version (nur DLL im Projekt eingebunden).
Die BDE ist am ehesten mit der embedded Version des Firebird vergleichbar.

sancho1980 18. Mai 2006 11:25

Re: bde schneller als firebird
 
also es gibt in tabelle dicentries so etwa 100000 einträge...bei der bdedauert die suchen nen augenaufschlag...unter firebird so 3 sekunden...also schon noch zu verkraften aber eben langsamer :-(

RavenIV 18. Mai 2006 11:29

Re: bde schneller als firebird
 
wie verwendest du denn die Suche in der BDE?
mit TTables, TDataste, TQuery oder wie?

lass doch mal Quellcode der Suche für BDE und der Suche für Firebird sehen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz