Forum: Datenbanken
by himitsu,
1. Feb 2024
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 CREATE INDEX idx_ABFDocDatum ON ABFDok (ABFDocDatum); (oder z.B. ABFDocDatum UNIQUE im CREATE TABLE), dann
* wird bei WHERE ABFDocDatum ... dieser Index benutzt...
Forum: Datenbanken
by himitsu,
31. Jan 2024
Das DateAdd("yyyy", -5, Date()) wird nur einmal berechnet. (außer die haben bei der Funktion und dem Queryplaner echt Scheiße gebaut)
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.
Forum: Datenbanken
by himitsu,
27. Jan 2024
Jupp, ein JOIN, anstatt des SubSELECTs.
Und dann auch schauen, ob auf den verlinkten Feldern ein Index liegt.
SELECT s.ArtNr, s.ArtName1,s.ArtGruppe, s.ArtZusInfo4
FROM sArtikel AS s
LEFT JOIN ArtLief AS l
ON l.ArtLiefArtNr = s.ArtNr
AND l.ArtLiefLiefNr = s.ArtZusInfo4
WHERE s.ArtInaktiv = false
AND s.ArtZusInfo4 LIKE 'K*'