![]() |
Datenbank: Sybase • Version: 5 • Zugriff über: BDE
DBGrid.SelectAll dauert sehr lange
Hallo zusammen.
Ich hab da mal ein Problem. ;-) Wir haben eine Anwendung welche auf eine Sybase 5 DB zugreift. Diese Anwendung sucht zu bestimmten Kriterien die Daten zusammen. Das dauert ca. 8 Minuten (absolut OK das viele Tabellen beteiligt und die DB sehr viele Daten enthält). Wenn die Abfrage fertig ist, werden die Daten in einem TRXDBGrid angezeigt. Das funktioniert alles wunderbar. Vor kurzem sind wir von Delphi 5 auf Delphi 2007 umgestiegen. Wenn ich die Anwendung (mit Delphi 5 erstellt) starte und auf dem Grid ein "SelectAll" aufrufe ist direkt alles markiert. Mach ich das ganze mit der Delphi 2007 Anwendung sieht es so aus als würde die Abfrage aus dem DataSet wieder laufen (dauert also wieder knapp 8 Minuten). Hab schon anstatt RXDBGRid ein "normales" DBGrid und auch ein JVDBGRID genommen. Immer mit dem gleichen Ergebnis. Kennt jemand das Problem ?? |
Re: DBGrid.SelectAll dauert sehr lange
Kannst du keine andere Zugriffskompo verwenden (z.B. SQLDirect)? Die BDE wird seit jahren nicht mehr weiterentwickelt und nur notdürftig für neue Delphi-Versionen zum laufen gebraucht. Und solche Problem könnten hier immer auftreten.
|
Re: DBGrid.SelectAll dauert sehr lange
Hi.
Erstmal danke für die schnelle Antwort. Wir sind aktuell dabei unsere Anwendung auf AnyDAC umzustellen. Allerdings wird das noch einige Zeit dauern bis wir da neu Beta haben. Da das Problem allerdings akut bei Kunden auftritt hatte ich gehofft es anders lösen zu können, zumal es mit Delphi 5 ja ging. |
Re: DBGrid.SelectAll dauert sehr lange
Ich nochmal.
Habe gerade mal auf die schnelle die Anbindung der Applikation ohne BDE per AnyDac gemacht. Das gleiche Verhalten tritt hier auch auf. Es liegt also nicht an der BDE. |
Re: DBGrid.SelectAll dauert sehr lange
Habs gefunden.
Es liegt nicht an der BDE. Es wurde hier auch das SQL Statement geändert wo wir eigentlich sicher waren das dies die Performance steigert. Vorher wurde hier das Statement
SQL-Code:
ausgeführt. Da Tabelle 2 nicht mehr benötigt wird haben wir den Code geändert auf
Select a,b,c from Tabelle1 where ID in (x,y,z,....)
union Select a,b,c from Tabelle2 where ID in (x,y,z,....)
SQL-Code:
Seither dauert das Grid.SelectALl ewig.
Select a,b,c from Tabelle1 where ID in (x,y,z,....)
Ich vermute das das Statement mit "Union" die DB gezwungen hat alle Datensätze abzurufen. Daher ging das SelectAll schnell. Ohne das Union werden wahrscheinlich nur die ersten x Datensätze abgerufen und beim SelectAll der Rest, was dann dauert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz