AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADOQuery.open dauert zu lange
Thema durchsuchen
Ansicht
Themen-Optionen

ADOQuery.open dauert zu lange

Ein Thema von thomasch · begonnen am 13. Apr 2005 · letzter Beitrag vom 14. Apr 2005
Antwort Antwort
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#1

ADOQuery.open dauert zu lange

  Alt 13. Apr 2005, 13:01
Datenbank: Oracle • Version: 9 • Zugriff über: OLE über ODBC
Hallo,
es geht mir eigentlich nur um die Darstellung von Werten aus einer LookupTable/Kennungsliste - dazu habe ich folgendes:

Delphi-Quellcode:
  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;
...
Das open dauert mir zu lange, schon bei sehr kleinen Datenmengen. Das SQL Statement gegen die DB läuft wesentlich schneller.

Da nur a.foo eine Werliste wiedergeben soll - ist ADOQuery möglicherweise das nicht optimale Verfahren?

Thomasch
  Mit Zitat antworten Zitat
bate

Registriert seit: 28. Jul 2004
Ort: Kahla
32 Beiträge
 
Delphi 7 Professional
 
#2

Re: ADOQuery.open dauert zu lange

  Alt 13. Apr 2005, 13:05
Zitat von thomasch:
Hallo,
es geht mir eigentlich nur um die Darstellung von Werten aus einer LookupTable/Kennungsliste - dazu habe ich folgendes:

Delphi-Quellcode:
  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;
...
Das open dauert mir zu lange, schon bei sehr kleinen Datenmengen. Das SQL Statement gegen die DB läuft wesentlich schneller.

Da nur a.foo eine Werliste wiedergeben soll - ist ADOQuery möglicherweise das nicht optimale Verfahren?

Thomasch
Hmm wenn das Connecten zu lange dauert, liegt das am SQL Server oder an der Verbindung. Das hat nichts mit dem
SQL Statement zu tun.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: ADOQuery.open dauert zu lange

  Alt 13. Apr 2005, 13:30
Auf dem Feld ATable.bar sollte/muss ein Index liegen, ansonsten ist auf ATable ein Full Table Scan nötig.
Andreas
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#4

Re: ADOQuery.open dauert zu lange

  Alt 13. Apr 2005, 14:06
Zitat von shmia:
Auf dem Feld ATable.bar sollte/muss ein Index liegen, ansonsten ist auf ATable ein Full Table Scan nötig.
Der ist da - ATable.bar ist der PK der Tabelle.
Momentan benötige ich dafür zwischen 0 und 3 sekunden - bei je maximal 200 Datensätzen.

Thomasch
  Mit Zitat antworten Zitat
thomasch

Registriert seit: 7. Apr 2005
57 Beiträge
 
Delphi 2007 Architect
 
#5

Re: ADOQuery.open dauert zu lange

  Alt 13. Apr 2005, 14:14
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
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: ADOQuery.open dauert zu lange

  Alt 14. Apr 2005, 07:53
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
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.
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