Bzgl. Probleme mit INSERT Befehl



  • Hi,

    habe einen neuen Thread geöffnet, weil ich zum letzten Kommentar eine Frage habe (Prepare) http://www.c-plusplus.net/forum/viewtopic.php?t=87129&start=10

    Ich habe bei meinem Projekt ca. 10 Tabellen. Es ist von der Performance her also besser, wenn ich für jede Tabelle eine eigene TQuery einbaue und den String mittels Params erstelle, anstatt nur eine Query zu verwenden und diese dann immer ein anderes Statement ausführen zu lassen?

    Danke!



  • strauberry,

    strauberry schrieb:

    Ich habe bei meinem Projekt ca. 10 Tabellen. Es ist von der Performance her also besser, wenn ich für jede Tabelle eine eigene TQuery einbaue und den String mittels Params erstelle, anstatt nur eine Query zu verwenden und diese dann immer ein anderes Statement ausführen zu lassen?
    Danke!

    der Vorteil bei 10 TQuery's könnte darin liegen, daß Du nicht andauernd die SQL-Statements neu zuweisen mußt.
    Grundsätzlich stellt sich immer die Frage, bei welchen Algorithmen Deines Programmes optimiert werden sollte. Wenn Du durch zehn statt einer Query letztlich einen Performance-Gewinn von 0,5% erzielst, hat sich die Mühe nicht gelohnt und selbst der wohlgesinnte User wird dafür nur ein Achselzucken übrig haben.
    btw: 10 TQuery-Komponenten, so sie denn aussagekräftige Variablen-Namen haben, können auch zu einer besseren Lesbarkeit des Quelltextes beitragen.



  • Zum Thema Performance von Statements denke ich, dass davon abhängt, wie Du das Statement einsetzt. Bei einer Bearbeitungs-
    maske, in die ein Benutzer Daten einträgt und diese dann auf Knopfdruck in die Datenbank eingetragen werden, halte ich es
    für relativ unproblematisch unvorbereitete (also z.B. dynamisch erstellte) Statements zu verwenden.
    Willst Du eine CSV-Datei auf einen Rutsch in die Datenbank einfügen, also z.B. 10000 Datensätze auf einmal, bietet sich das
    Vorbereiten und damit die Verwendung von parametrisierten Statements an. Hier würde dann die Datenbank nur einmal das Statement
    vorbereiten statt 10000 mal.
    Andererseits sollte man auch überlegen, wieviele Benutzer gleichzeitig auf die Datenbank zugreifen. Bei einer Handvoll werden
    unvorbereitete Statements die Datenbank nicht gleich in die Knie zwingen, greifen mehrere Hundert oder Tausend Benutzer gleich-
    zeitig auf die Datenbank zu, sieht die Situation schon anders aus. Dann ist aber wieder die Frage, ob die vorbereiteten
    Statements zwischen zwei Zugriffen nicht schon wieder aus dem Speicher entfernt werden.

    Gruß,

    Alexander


Anmelden zum Antworten