Extreme Veteran
Beiträge: 567
| Hallo,
Greiff - 21.02.24 13:41
SELECT Index, Datum, OT, Vorname, Name, Versicherung, Bemerkung1, Geburtsdatum, ZI, Abrechnung, AT, EE, Aufnahmenummer, PR, CDate(Int(Nz([AT]))) AS AN, Seite, ED
FROM [Kalender-tabelle]
WHERE ((( OT) Not Like "*amb*") AND (( Name)<>"x" And ( Name) Is Not Null And ( Name)<>"xyz") AND (( EE) Is Null Or ( EE)>Date()-1) AND (( PR)<>"nicht erschienen" And ( PR)<>"ohne Ü") AND ((CDate(Int(Nz([AT]))))<=Date() And (CDate(Int(Nz([AT]))))>Date()-30)) OR ((( OT) Not Like "*amb*") AND (( Name)<>"x" And ( Name) Is Not Null And ( Name)<>"xyz") AND (( EE) Is Null Or ( EE)>Date()-1) AND (( PR) Is Null) AND ((CDate(Int(Nz([AT]))))<=Date() And (CDate(Int(Nz([AT]))))>Date()-30))
ORDER BY Name;
Ich denke, der Hund liegt in der Where-Klausel begraben. Ohne Funktionsänderung könntest du folgendes schreiben:
WHERE OT Not Like "*amb*" AND [Name] Not In ("x", "xyz") And [Name] Is Not Null
AND (EE Is Null Or EE>Date()-1)
AND (PR Not In ("nicht erschienen", "ohne Ü") OR PR Is Null)
AND CDate(Int(Nz([AT]))<=Date() And CDate(Int(Nz([AT]))>Date()-30
Des Weiteren solltest du prüfen, was AT enthält, und ob die Datumsumrechnung wirklich notwendig ist. Den die ist der Grund, warum die Daten auf dem Client ausgewertet werden müssen.
Übrigens sind Namen wie [Index] und [Name] extrem ungünstig gewählt, weil es Schlüsselwörter sind. Sie müssten eigentlich in eckigen Klammern stehen, damit die Abfrage funktioniert. [Datum] wird dir ebenfalls gelegentlich um die Ohren fliegen, wenn der SQL-Editor mal wieder eine lokalisierte Funktion zu erkennen glaubt, selbst in eckigen Klammern. ;-)
Da es offensichtlich meistens nicht gelingt, die Ethernet Geschwindigkeit zu erhöhen (das liegt außerhalb meines Einflusses), habe ich glaube ich nur noch 2 Möglichkeiten
- auf einen sql Server zu gehen (das wird aber Zeit kosten, da ich mich nicht damit auskenne)
Naa, so schlimm wäre das nicht. ;-)
- statt msaccess eine sqlite Datenbank zu nehmen und die sql Abfragen per php zu machen (ist aber viel Umprogrammierung)
Nicht notwendig.
- oder die Struktur der Datenquelle in kleinere Elemente zu zerhacken und nur Teile zu laden und wenn man alles braucht, die wieder per UNION zusammenzusetzen.
Eine andere Idee habe ich nicht.
- Die Abfragen (SQL) auf Performance überprüfen.
- Den Feldern die richtigen Datentypen geben (z.B. AT von Text auf Datum ändern), um lokale Funktionen zu vermeiden.
- Prüfen, ob folgende Felder Teil eines Index sind:
- - OT
- - Name
- - EE
- - PR
- - AT
Falls nicht, leg sie entsprechend an. Das hilft ebenfalls bei der Performance.
----- Gruss - Peter |