PDA

Vollständige Version anzeigen : Accesss zu DB sehr langsam


tetex
16.06.2012, 05:30
Hallo,

unser DB ist recht gross geworden
die sachen werden in MSSQL-DB eingetragen -DNS-

Frage ist es kann man diese abfragen schneller machen ?

Ich weiss nicht woran es liegt, kann es auch unter Programmierung liegen ?
vieles davon sind in Makros geschrieben worden.
Kann es der Grund sein?

Makro<-> VBA

Lanz Rudolf
16.06.2012, 08:51
Hallo
Makros sind nicht sogut
lies in meiner Doc Hier:
https://dl.dropbox.com/u/46590638/ACC/ACCESS%202000BU%20%20Begleitunterlagen.zip
Seite 34
Warum sollten MAKROS vermieden werden? (für 97 bis 2003 auf jeden Fall)

seit 37
3.14 Makros konvertieren

Seite: 59
Performance Verbesserung
ganzes Kapitel 5.2 !

Andre.Heisig
16.06.2012, 09:35
Hallo,

unser DB ist recht gross geworden
die sachen werden in MSSQL-DB eingetragen -DNS-

Frage ist es kann man diese abfragen schneller machen ?

Ich weiss nicht woran es liegt, kann es auch unter Programmierung liegen ?
vieles davon sind in Makros geschrieben worden.
Kann es der Grund sein?

Makro<-> VBA

Was heißt denn größer in MB und in welchem Zeitraum?

Wenn die SQL Datenbank tatsächlich immens schnell "zunimmt", sind Performance Verbesserungen doch nur der zweite Schritt, evtl. Sollte man das Datenmodell selbst mal kritisch prüfen?

ebs17
16.06.2012, 09:57
kann man diese abfragen schneller machen ?
"Diese" Abfragen sind welche?

Bezüglich Indexplanung, Indexnutzung und Performance in Abfragen kannst Du Dich in das folgende Script vertiefen (besser auswendig lernen):
Performance in Abfragen (http://www.donkarl.com/Downloads/AEK/AEK8_Abfragen_Performance.zip) von Michael Zimmermann

Thomas Möller
16.06.2012, 09:59
Hallo!

unser DB ist recht gross geworden
die sachen werden in MSSQL-DB eingetragen -DNS-

Was heißt hier groß? Von wievielen Tabellen und wievielen Datensätzen sprichst Du?
Wie lange laufen Deine Abfragen?
Kannst Du mal einen SQL-String einer langsamen Abfrage hier posten?

CU

tetex
16.06.2012, 16:15
klar,

SELECT [QRY Uebersicht Bestellungen Maske].BESTID, [QRY Uebersicht Bestellungen Maske].Prio, [QRY Uebersicht Bestellungen Maske].Datum, [QRY Uebersicht Bestellungen Maske].[bestellt am], [QRY Uebersicht Bestellungen Maske].Lieferant, [QRY Uebersicht Bestellungen Maske].Kunde, [QRY Uebersicht Bestellungen Maske].Auftrag, [QRY Uebersicht Bestellungen Maske].Versandart AS Priorität, [QRY Uebersicht Bestellungen Maske].Artikel, [QRY Uebersicht Bestellungen Maske].[bestellte Menge], [QRY Uebersicht Bestellungen Maske].[gelieferte Menge], [QRY Uebersicht Bestellungen Maske].[offene Menge], [QRY Uebersicht Bestellungen Maske].[Notitz Lieferant], [QRY Uebersicht Bestellungen Maske].[letzte Lieferung am], [QRY Uebersicht Bestellungen Maske].BemerkungKunde
FROM [QRY Uebersicht Bestellungen Maske]
WHERE ((([QRY Uebersicht Bestellungen Maske].Datum)>Date()-[Formulare]![uebersicht Bestellungen]![Txt_tage]) AND (([QRY Uebersicht Bestellungen Maske].Lieferant) Like [Formulare]![uebersicht Bestellungen]![filter_lieferant] & "*") AND (([QRY Uebersicht Bestellungen Maske].Kunde) Like [Formulare]![uebersicht Bestellungen]![filter_kunde] & "*") AND (([QRY Uebersicht Bestellungen Maske].Auftrag) Like [Formulare]![uebersicht Bestellungen]![filter_auftrag] & "*") AND (([QRY Uebersicht Bestellungen Maske].Versandart)=[Formulare]![uebersicht Bestellungen]![filter_versand]) AND (([QRY Uebersicht Bestellungen Maske].Artikel) Like [Formulare]![uebersicht Bestellungen]![filter_artikel] & "*") AND (([Formulare]![uebersicht Bestellungen]![filter_versand])<>"alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])="alle")) OR ((([Formulare]![uebersicht Bestellungen]![filter_versand])="alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])="alle")) OR ((([QRY Uebersicht Bestellungen Maske].[offene Menge])>0) AND (([Formulare]![uebersicht Bestellungen]![filter_versand])<>"alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])=">0")) OR ((([QRY Uebersicht Bestellungen Maske].[offene Menge])>0) AND (([Formulare]![uebersicht Bestellungen]![filter_versand])="alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])=">0")) OR ((([QRY Uebersicht Bestellungen Maske].[offene Menge])=0) AND (([Formulare]![uebersicht Bestellungen]![filter_versand])<>"alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])="0")) OR ((([QRY Uebersicht Bestellungen Maske].[offene Menge])=0) AND (([Formulare]![uebersicht Bestellungen]![filter_versand])="alle") AND (([Formulare]![uebersicht Bestellungen]![Filter_Mengeoffen])="0"))
ORDER BY [QRY Uebersicht Bestellungen Maske].Prio, [QRY Uebersicht Bestellungen Maske].Datum;

hcscherzer
16.06.2012, 16:31
Um wieviel Datensätze geht es da?
Und wie lange dauert es?
Und wie sehen die Datenquellen für die [QRY Übersicht Bestellungen Maske] aus?

tetex
16.06.2012, 16:41
8000 Einträge,

ich müsstem ir das mal genauer angucken hab schon paar Einstellungen unter Option vorgenommen eindeutig besser geworden
aber diese abfragen sind glaube ich BREMSE für ACCESS

MfG

Lanz Rudolf
16.06.2012, 16:42
Hallo
ich hoffe für Dich das die Felder die Du
in dem Where und im ORDER brauchst indexierd sind :)


diese abfragen sind glaube ich BREMSE für ACCESS

dann Zeige uns doch Diese auch

hcscherzer
16.06.2012, 16:48
Diese WHERE Klausel ist ja ellenlang.
Die lässt sich sicher noch vereinfachen, da kommt vieles doppelt vor.

tetex
16.06.2012, 16:51
Und wie?

Ich dachte vielleicht lasse ich Abfrage in temp ordner schreiben und lese von dort aus und danach wieder vom temp löschen wäre das vielleicht sinnvoll?