![]() |
AW: SQL Nachhilfe
Hallo,
das Year-Dingens könnte man so umschreiben DateAdd("yyyy", -5, Date()) Aber warum übergibst Du das nicht als konstanten Parameter? Warum wird das jedesmal berechnet? Und noch mal auf die Indizes zu kommen. INNER JOIN ABFPos as P ON A.ABFDocId = P.ABFPosDocID ) inner join sPersKto as M on M.PersKtoNummer = A.ABFDocKundenNr where P.ABFPosArtNr = '11024060' and Year([A.ABFDocDatum]) > Year(Date())-5 and A.ABFDocType = 1 Die fett markierten Felder müssten Indizes enthalten. Ich würde danach auch mal die MDB komprimieren. |
AW: SQL Nachhilfe
Das
Delphi-Quellcode:
wird nur einmal berechnet. (außer die haben bei der Funktion und dem Queryplaner echt Scheiße gebaut)
DateAdd("yyyy", -5, Date())
Aber das Date vom Feld, wird natürlich für jeden Datensatz berechnet. Ja, die Berechnung/Funktionsausführung dauert nicht lange und braucht nahezu keine Zeit, aber da es keinen Index auf dessen Ergebnis gibt, kann eben auch Keiner genutzt werden. |
AW: SQL Nachhilfe
Hallo,
kein Index? CREATE INDEX idx_ABFDok_ABFPosArtNr_Datum_Type_KundenNr ON ABFDok (ABFPosArtNr, ABFDocDatum, ABFDocType, ABFDocKundenNr); Eventuell sollte noch ein Index direkt auf ABFDocDatum gesetzt werden, also nicht so ein "komischer" Compound-Index. |
AW: SQL Nachhilfe
idx_ABFDok_ABFPosArtNr_Datum_Type_KundenNr ist ein Combi-Index, der genutzt wird, wenn im WHERE direkt auf alle Felder (ABFPosArtNr, ABFDocDatum, ABFDocType, ABFDocKundenNr) gerpft wird.
Hast du einen Index nur auf "ABFDocDatum", also
Delphi-Quellcode:
(oder z.B.
CREATE INDEX idx_ABFDocDatum ON ABFDok (ABFDocDatum);
Delphi-Quellcode:
im CREATE TABLE), dann
ABFDocDatum UNIQUE
* wird bei
Delphi-Quellcode:
dieser Index benutzt
WHERE ABFDocDatum ...
* aber nicht bei
Delphi-Quellcode:
WHERE Year(ABFDocDatum) ...
Für Letzteres bräuchte man z.B. sowas
Delphi-Quellcode:
(falls Access sowas kann)
CREATE INDEX idx_YearABFDocDatum ON ABFDok (Year(ABFDocDatum));
Und wie gesagt, kommt es teilweise auch auch auf die Art des Indize drauf an. MySQL oder z.B. Postgres kennen unterschiedliche Typen (z.B. B-tree, hash, GiST, SP-GiST, GIN, and BRIN) B-Tree ist heute oft gebräuchlich und auch für ein
Delphi-Quellcode:
geeignet, während HASH für ein LIKE absolut unnütz ist, aber für ein
LIKE 'irgendwas*'
Delphi-Quellcode:
mit langen Strings super wäre.
=
Und für
Delphi-Quellcode:
wäre es besser, wenn der B-Tree rückwärts von hinten aufgebaut ist.
LIKE '*sonstwas'
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz