Datenbanken schneller zeigen



  • Hallo,

    ich habe folgende Frage an euch. Ich habe mir eine Kundendatenbank erstellt. Diese hat schon eine Menge an Kunden. Leider merke ich das diese bei suchen nach kunden sehr langsam ist. Mein Tool sieht folgendermassen aus. Ich habe eine Paradox Tabelle. Diese lese ich in ein listview ein. Wenn man nun ein EditFeld verändert dann sucht das tool in der tabelle nach diesem begriff und schmeißt es nochmal in dem listview raus. Doch leider merke ich dass es sehr langsam ist.

    Kann mir jemand vieleicht einen tip geben wie man das schneller oder professioneller lösen kann.

    danke schön



  • Versuchs mal mit

    dbAdressen->DisableControls();
    

    und wenn fertig mit

    dbAdressen->EnableControls();
    

    MfG
    Andidreas



  • hallo,

    danke für die hilfe. ich habe versucht nachzuschauen was denn dieser befehl verursach denn du mit gegeben hast. Doch leider verstehe ich das nicht ganz was in meine buch steht. Es heißt dort, dass irgendwelche sensiblen daten ignoriert werden. Kannst du mir vieleicht bitte sagen was mit dem befehl gemeint ist.

    danke



  • Hi,
    also zum einem ist Paradox meiner Ansicht nach sehr schlecht.
    Zum anderen , um Dein Problem im Griff zu bekommen, habe ich folgenden Tipp:

    Die meiste Zeit für die Suche nimmt nicht die abfrage selber, sondern die aktualisierung auf dem Bildschirm.
    Also setze Dein DataSource während der Suche auf Enabled=false und sobald die Abfrage ferig ist wieder auf true.

    Du wirst schon merken, daß der Performanceunterschied enorm ist!

    Anm.:Es sollten bei größeren Tabellen natürlich auch Indizes gesetzt werden

    epidemic



  • Danke schön



  • Hallo epidemic.

    Welche Datenbank würdest du empfehlen. Bremst BDE auch nicht etwas die performance. Wenn ja welche schnittstelle soll ich dann benutzen. Ich habe gehört dass ADO langsamer als BDE sein soll.

    Mit dem DataSource wird das nicht so ganz klappen. Denn ich lese die Datenbank nur einmal in ein ListView ein. Das problem ist halt das ich im EditFenster onchange die suchkriterien eingeben und ab dann ist es sehr langsam.



  • Du könntest auch einen Suchindex erstellen.
    Sortier die Daensätze noch einmal neu nach dem Spalte nach der du Suchen willst und dann denk dir nen algo mit > und < aus .... also beispiel du hast 100 Datensätze und suchst datensatz mit kundennummer 64, jetzt schaust du dir 1 an, merkst das Datensatz grössere Nummer hat, dann schaust du dir den 50ten Datensatz an, der hat die nummer 80, also kleiner werden und 25 anschauen, der hat nummer 55 usw bis du ihn gefunden hast, das geht bei grossen mengen sehr sehr viel schneller... und nach Alphabet sortieren geht ähnlich



  • Stellt sich mir die Frage warum ListView? Datenbank-Kompos nehmen, Filter setzen geht ruckzuck. Und bei längeren Aktionen Ausgabe mit

    dbAdressen->DisableControls();
    

    ausschalten und mit

    dbAdressen->EnableControls();
    

    wieder einschalten.



  • Hallo,

    also ListView habe ich deshalb genommen damit ich halt einmal die datenbank auslese und dann die verbindung trenne. So belaste ich kaum das netzwerke. Wenn ich eine DBGrid komponente nehmen dann ist ja die verbindung ständig vorhanden. Da leidet doch die performance, oder? Denn wenn ich Table->Active=false mache dann ist ja das DBGrid sofort leer da die verbindung unterbrochen wurde. Bei ListView kann mir das nicth passieren denn dann sind die Daten im ListView gespeichert. Außerdem kann ich die Spalten viel schöner bennen. Es sieht allgemein einfach besser aus.

    Habt ihr denn eine bessere Lösung. Ich bin wirklich für jeden tip dankbar. Ich noch sehr klein in Sachen Datenbanken, deshalb würde ich das gerne irgendwie lernen. Bücher gibt es kaum welche für C++Builder



  • Original erstellt von BlackDragon:
    Ich habe gehört dass ADO langsamer als BDE sein soll.

    hm, soweit ich das beurteilen kann, stimmt das nicht.
    Des weiteren verursacht die BDE Speicherlöcher, die früher oder später zum Programmabsturz führen.
    Auch wird die BDE nicht mehr weiterentwickelt.

    Du siehst, es spricht alles gegen die BDE...und das sagt sogar Borland.



  • hi, danke euch nochmal für die hilfe. Doch ich habe wirklich schon alles was ihr mir gesagt habt versucht. doch leider ist das wirklich sehr langsam. ich habe so um die 1000kunden in der datenbank. doch die ist wirklich träge. mein problem ist wie oben beschrieben. ich tippe einen begriff in editfeld ein onchange. danach sucht er in der datenbank. doch das dauert. die daten werde im listview angezeigt. weiß vieleicht eine wirklich gute lösung dafür.

    danke an euch



  • Hi,

    benutze eine andere Datenbank.

    Hier mal meine Auswahl:
    http://www.kylecordes.com/bag/index.html

    dort sollte man zum Beispiel auch mal das lesen:
    http://www.kylecordes.com/bag/whynotbde.html

    Vielleicht MySQL:
    MySQL++ => BCB5
    Verbindung zu MySQL

    oder vielleicht doch sapDB:
    http://www.sapdb.org/7.4/sap_db_software.htm

    auf alle kannst du über ODBC zugreifen.

    Die sind mit Sicherheit um einiges schneller...

    Übrigens reagiert OnChange bei jeden Testendruck im Edit was nicht unbedingt von Vorteil ist, wenn man dabei sucht.



  • Danke dir. Das werde ich mal versuchen.



  • du kannst auch lediglich die datensätze im listview anzeigen, die wirklich sichtbar sind. wenn der user scrollt, dann zeigst du einfach die nächsten datensätze an. ich nehme auch paradox und listviews (die db-kompos sind meiner meinung nach scheisse) und habe keine probs damit.

    im listview kannst du BeginUpdate und EndUpdate verwenden um die aktualisierung zu verhindern, bis das listview gefüllt ist. ebenso ist es sinnvoll das listview während des füllens zu verbergen (visible = false).



  • ich nutze ado und mssql server. und 1000 kunden ist wirklich lächeriche zahl. die abfrage un anzeige dauert da nicht mal 1 sek. mit eine serverseitigen Cursor un CursorType = ctOpenForwardOnly.

    du kannst auch die MSDE nutzen: http://www.microsoft.com/germany/ms/msdnbiblio/show_all.asp?siteid=555613


Anmelden zum Antworten