Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Sql-Anfrage mit WHERE langsamer als ohne trotz Index?

  Alt 21. Mai 2005, 14:42
Zitat von Union:
Du erzählst uns wahrscheinlich nicht wirklich alles. Ich habe hier eine Adressentabelle im DBF Format mit knapp 600.000 Einträgen. Und hier sind meine Ergebnisse:

Select * from adress where name < 'S%' -> zwischen 47ms und 120ms
Select count(*) from adress where name < '%S' -> zwischen 46ms und 98ms (418000 Treffer)
Das sind ja Traumzeiten
Zitat von Union:
Hast Du vielleicht die Datenbankverbindung geschlossen?
AdsQuery.Close? Natürlich, bei jedem Schließen meines SucheFensters.
Zitat von Union:
Der allererste Aufruf nach dem Öffnen kann tatsächlich lange dauern. Aber wenn eine Tabelle einmal gecached wurde, geht das blitzschnell.
Stimmt! Das bringt mich auf eine Idee!
Zitat von Union:
  • Welche ADS-Version verwendest Du
  • TDataSet Descendant for Delphi/C++Builder 7.0
    Zitat von Union:
  • Wie greifst Du auf die Tabelle zu (Direkt oder AdsConnection)
AdsConnection. Wie greift man denn direkt zu?
Zitat von Union:
  • Wie sind die Indexausdrücke genau aufgebaut
  • aus AdsQuery.IndexDefs.Items[i].FieldExpression erfahre ich nur die einzelnen Indices zB. 'name' oder 'plz;ort'. Anders komme ich z.Z.nicht rann, da mir die Tools zu den Clipper-DBs fehlen.
    Zitat von Union:
  • Verwendest Du ADSSettings, und wenn ja welche
  • die Standarteinstellungen, außer ShowDeleted := false
    Zitat von Union:
  • Befindet sich eine grosse Anzahl von Deleted-Records in der Tabelle
  • Unteranderem mit sicherheit ja

    ich hab jetzt mit
    Delphi-Quellcode:
    AdsQuery.SetKey;
    AdsQuery.FieldByName('name').AsString := 'g';
    AdsQuery.GotoNearest;
    rum experimentiert, aber so richtig funktioniert das auch nicht.
    Mal findet "er" einen Datensatzen, einen anderen wieder nicht ...

    Mit Filter zu arbeiten ist auch ne feine Sache, funktioniert sogar (auf den ersten Blick), allerdings soll in der Anzeige nix gefiltert werden.
    Deswegen helfen mir Filter auch nicht weiter.

    Gruß
    gmc
      Mit Zitat antworten Zitat