AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Sql-Anfrage mit WHERE langsamer als ohne trotz Index?
Thema durchsuchen
Ansicht
Themen-Optionen

Sql-Anfrage mit WHERE langsamer als ohne trotz Index?

Ein Thema von gmc616 · begonnen am 21. Mai 2005 · letzter Beitrag vom 21. Mai 2005
Antwort Antwort
gmc616

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

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

  Alt 21. Mai 2005, 13: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
    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 07:01 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