echtzeitsuche in mySQL Datenbank



  • Hallo,

    habe eine Datenbank in mySQL mit folgenden Tabellen:

    Kundentabelle (enthält unter anderem Kundennr,Namen,Telefonnr, und als Fremdschlüssel Strassennr);
    Strassentabelle (enthält unter anderem Strassennr,Strassenname und als Fremdschlüssel Ortnr)
    Ortetabelle (enthält unter anderem Ortnr,Ortname)

    Die Tabellen können nach folgenden Kriterien durchsucht werden.
    Kundennr,Telefonnr,Name,Strasse

    Bisher realisiere ich die Kundensuche indem ich im Eingabefeld (TEdit) auf OnChange mir das SQL Statement entsprechend zusammensetze.

    String sql="SELECT * FROM kunden,strassen,orte WHERE ",sqlarr[4],order[4];
       sqlarr[0]="telefonnr LIKE \""+search+"%\"";
       sqlarr[1]="pk_kundennr = "+search;
       sqlarr[2]="nachname LIKE \""+search+"%\"";
       sqlarr[3]="strassenname LIKE \""+search+"%\"";
       order[0]="telefonnr";
       order[1]="pk_kundennr";
       order[2]="nachname";
       order[3]="strassenname";
       sql+=sqlarr[spalte];
       sql+=" AND fk_strassennr = pk_strassennr AND fk_ortnr=pk_ortnr ORDER BY ";
       sql+=order[spalte];
       frmkundensuche->tblkunden->SQL->Clear();
       frmkundensuche->tblkunden->SQL->Add(sql);
       frmkundensuche->tblkunden->Open();
    

    Das funktioniert auch alles einwandfrei.Nur bei bis jetzt über 3000 Kunden klappt das so nicht mehr in Echtzeit.

    Wie könnte ich das schneller hinbekommen ?

    Edit:
    Code-Tags repariert



  • Keine Ahnung was für eine Componente sich hinter tblkunden
    verbirgt, aber bei ADOQuery kann man zusätzlich einen Filter (ADOQuery->Filter)
    über die SQL-Abfrage legen, geht schneller als jedesmal sich die Daten neu von der DB zu holen.



  • Hallo,

    tblkunden ist eine mysqldac Query Komponente.
    Bei der kann ich auch einen Filter setzen.
    Dann müßte ich einmal komplett alle Kunden in den Query holen.

    SELECT * FROM kunden,strassen,orte WHERE fk_strassennr = pk_strassennr AND fk_ortnr = pk_ortn;
    

    Nur lade ich mir dann über das Query nicht alles direkt in den Speicher ?



  • OK

    Solche realen Geschichten sind für euch wohl zu schwierig.
    Habs nun selbst gelüftet.

    Trollt nur weiter hier mit euren Spielereien rum .... 👎



  • Hallo drösig,
    es ist sicher zu viel erwartet daß du in dem Forum eine Lösung presentierst bekommst die dir auch noch genehm ist sondern Denkanstöße die dir weiterhelfen deine ideale Lösung zu erreichen.

    Deine Reaktion ist nicht gerechtfertigt 😡

    Evi48



  • drösig schrieb:

    Habs nun selbst gelüftet.

    Es gehört zum guten Ton, auch selbstgefundene und/oder triviale Lösungen bekanntzugeben.

    Allerdings habe ich das Gefühl, dass du auf "guten Ton" keinen Wert legst. Ich hoffe natürlich, dass ich damit falsch liege.



  • A bisserl ungeduldig war er ja, der Knilch. 😃



  • Aber man hat wohl richtig Zeitdruck, wenn man sich mit wichtigen realen Geschichten beschäftigt. 😉



  • Auch unter Zeitdruck sollte man höflich bleiben. Wir sind alle nur Menschen und auch sicher mal schlecht drauf aber das Forum ist sicher kein Ventil für unseren Frust, denn alle die sich hier zu Wort melden haben ein Problem das jeder mehr oder weniger schnell gelöst haben möchte oder muß.

    Frohe Ostertage
    Evi48


Anmelden zum Antworten