Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03250.jsonl.gz/66

Eine Person hat eine Rechnungsdresse und optional eine Lieferadresse. Falls eine Lieferadresse vorhanden ist, soll diese ausgegeben werden, falls nicht die Rechnungsadresse. Dies könnte man folgendermassen lösen:
SELECT A.AddressString FROM Person P INNER JOIN Address A ON A.AddressId = ISNULL(P.AddressId, P.DeliveryAddressId)
Dummerweise kann die JOIN Bedingung mit der ISNULL Funktion dazu führen, dass ein bestehender Index auf Address.Id nicht verwendet wird.
Folgende Variante gibt zwar etwas mehr zu schreiben, die Performance ist jedoch um Welten besser:
SELECT ISNULL(A2.AddressString, A1.AddressString) AddressString FROM Person P INNER JOIN Address A1 ON A.AddressId = P.AddressId LEFT OUTER JOIN Address A2 ON A.AddressId = P.DeliveryAddressId