JeFi Geschrieben 19. März 2004 Teilen Geschrieben 19. März 2004 Hallo Also ich habe folgendes Problem! Ich habe ein Java Programm geschrieben was via ODBC auf eine Access DB zugreift! Nun ist mein Problem das det alles schweine lange Dauert für eine einfache abfrage 5 sek liegt(bei einer kleinen Datenmenge von nicht mal 1000 Datensätzen) das irgentwie an ODBC!? Welche Möglichkeit habe ich das ganze Performanter zu gestallten (dies wenn möglich mit der Access DB) vielen Dank im voraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
patrick the boss Geschrieben 19. März 2004 Teilen Geschrieben 19. März 2004 Ich denke das liegt weniger an ODBC als an den Abfragen :rolleyes: Die lange Laufzeit hängt aber auch natürlich mit Access zusammen die nicht für alzuviele Datensätze ausgelegt ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JeFi Geschrieben 19. März 2004 Autor Teilen Geschrieben 19. März 2004 Hi Das mit Access != große Datenmengen habe ich schon gehört aber alles was unter 10.000 Datensätzen liegt ist für mich noch klein oder!? Also wenn ODBC die ganze Abfrage nicht wirklich langsammer macht muss ich wohl meine Abfragen stark überarbeiten! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JeFi Geschrieben 19. März 2004 Autor Teilen Geschrieben 19. März 2004 hätte denn jemand eine Ahnung wie ich diese SQL-Abfrage schneller gestallten könnte Select h.name, count (z.id), h.id FROM tbl_Zimmer z, tbl_Haus h WHERE z.key_Haus = h.id AND h.name <> 'Hotel' AND h.name <> 'Praktikum' AND h.name <> 'Import' AND z.id not in (SELECT distinct z.id FROM tbl_Zimmer z, tbl_Aufenthalt auf WHERE auf.Key_Zimmer=z.id AND (((DateValue('19.03.2004') <= auf.Von AND DateValue('19.03.2004') <=auf.Bis) AND ((DateValue('19.03.2004') >= auf.Von AND DateValue('19.03.2004')>=auf.Bis) OR (DateValue('19.03.2004')>= auf.Von AND DateValue('19.03.2004') <= auf.Bis))) OR (((DateValue('19.03.2004') >= auf.Von AND DateValue('19.03.2004') <=auf.Bis) AND ((DateValue('19.03.2004') >= auf.Von AND DateValue('19.03.2004')>=auf.Bis) OR (DateValue('19.03.2004')>= auf.Von AND DateValue('19.03.2004') <= auf.Bis)))))) GROUP BY h.name, h.id ORDER BY h.id das Performancproblem liegt sicherlich in den Datums Abfragen >= und <= aber between kann ich da nicht nehmen oder!?!? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Christl Geschrieben 19. März 2004 Teilen Geschrieben 19. März 2004 Original geschrieben von JeFi Also wenn ODBC die ganze Abfrage nicht wirklich langsammer macht muss ich wohl meine Abfragen stark überarbeiten! ´S gibt mehrere Lösungsansätze: - Abfragen bei Access mit Like-Operatoren sind wohl sehr serverlastig, wenn Du mehrere Like´s drin hast, wirds um so "lastiger" - HTML-Ausgabe von Abfragen machts auch langsam.... und was m.E. noch am wahrscheinlichsten ist: <% @ Language="VBScript" %> <% Response.Buffer = true %> Es kann nämlich sein, dass im IIS die Pufferung deaktiviert ist. Die Seite sollte erst an den Client gesendet werden, wenn sie komplett abgearbeitet ist. Wenn bei Deinen Abfragen mehrere Schleifen drin sind, wird jede Ausgabe sofort an den Client gesendet, was natürlich wesentlich mehr Traffic und Belastung des Servers verursacht. Mal ausprobieren... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 19. März 2004 Teilen Geschrieben 19. März 2004 Ich denke das Performance-Problem liegt am ehesten in der geschachtelten Abfrage. Hatte bei solchen Sachen auch Performance Probleme. Access hat vor allem im Netzwerk-Einsatz große Probleme, bei lokalen Installation hatte ich auch mit großen Datenmengen keine Schwierigkeiten. Ist halt eine Desktop-Datenbank und kein Client/Server DBMS Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JeFi Geschrieben 19. März 2004 Autor Teilen Geschrieben 19. März 2004 Danke erst ma für die vielen Antworten! Hm das mit den verschachtelten Abfragen is natürlich mist hatte mir um die DB nicht so den kopf gemacht weil ich dachte mit den kleinen Mengen is das nicht das Problem aber wenn man bei dieser Abfrage siehe oben schon min 5 sek warten muss ist das auch nicht mehr schön und hindert am schnellen Arbeiten. Hätte ihr vielleicht Vorschläge wie ich das am Besten hinbekommen kann? Abfrage ändern oder sogar die DB (was mir nicht so lieb wäre da die DB schon mit Daten gefüllt wurde) später so die DB auch auf einen Server liegen und von da auf sie zugegriffen werden (auch mit ODBC) das wird dann alles bestimmt noch was langsammer :-( Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
grueni Geschrieben 19. März 2004 Teilen Geschrieben 19. März 2004 Ich würde erstmal testen, ob es wirklich an der Schachtelung liegt. Also erstmal die beiden Abfragen einzeln ausführen. Wenn die Performance dann ok ist, weißt du schonmal wo dein Problem liegt. Wir lösen unsere Performance Probleme meistens, indem wir einfache Abfragen machen und die komplizierteren Auswertungen per Programmcode ausführen. Diese Vorgehensweise ist aber bei Client/Server Datenbanken nicht empfehlenswert, da dort die Netzlast dann stark ansteigen würde. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
JeFi Geschrieben 19. März 2004 Autor Teilen Geschrieben 19. März 2004 Hallo zum Letzten habe den Grund dank euer Hilfe gefunden lag wirklich an der Verschachtelung echt krass hätte ich nicht gedacht das des so Performance kostet aber naja man lernt halt nie aus!!! wünsch euch noch ein schönes WE Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.