![]() |
Datenbank: Oracle • Version: 9 • Zugriff über: OLE über ODBC
ADOQuery.open dauert zu lange
Hallo,
es geht mir eigentlich nur um die Darstellung von Werten aus einer LookupTable/Kennungsliste - dazu habe ich folgendes:
Delphi-Quellcode:
Das open dauert mir zu lange, schon bei sehr kleinen Datenmengen. Das SQL Statement gegen die DB läuft wesentlich schneller.
form1.ADOConnection1.Open('user','passwort');
form1.adoquery1.active := false; form1.adoquery1.sql.clear; form1.ADOQuery1.SQL.Append('select a.foo from Atable a where a.bar in (select b.bar from BTable b where B.wert like :param);'); form1.ADOQuery1.Parameters.ParamByName('param').Value:=myinputvalue; form1.ADOQuery1.Open; ... Da nur a.foo eine Werliste wiedergeben soll - ist ADOQuery möglicherweise das nicht optimale Verfahren? Thomasch |
Re: ADOQuery.open dauert zu lange
Zitat:
SQL Statement zu tun. |
Re: ADOQuery.open dauert zu lange
Auf dem Feld ATable.bar sollte/muss ein Index liegen, ansonsten ist auf ATable ein Full Table Scan nötig.
|
Re: ADOQuery.open dauert zu lange
Zitat:
Momentan benötige ich dafür zwischen 0 und 3 sekunden - bei je maximal 200 Datensätzen. :( Thomasch |
Re: ADOQuery.open dauert zu lange
Offenbar braucht das 'like' so lange.
Die selbe Abfrage mit "= :param" statt "like :param" ist in einem ersten Test bis zu 3 Sekunden schneller. Bei so wenigen Datensätzen (<200) hätte ich das so nicht vermutet. Danke trotzdem. Thomasch |
Re: ADOQuery.open dauert zu lange
Versuch mal, deine Abfrage umzustellen und auf b.wert ein Index zu legen.
SQL-Code:
select
a.foo from ATable a, BTable b where a.bar = b.bar and b.wert like :param |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 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-2025 by Thomas Breitkreuz