Ich habe die folgende Abfrage, die bis zu 2 Sekunden dauert, um mit einem Datensatz von weniger als 100.000 Zeilen ausgeführt zu werden.
Mein SQL ist sehr verrostet, aber es sieht so aus, als würde es eine Menge mehr Arbeit leisten, als es sollte. Kann jemand einige Hinweise geben, wo man nachsehen muss, um dies zu beschleunigen?
SELECT
a.AddressID,
IsPrincipal = CASE
WHEN EXISTS(SELECT TOP 1 1 FROM dbo.Setting s WHERE s.SettingValue = a.AddressID AND s.SettingDefinitionID = 3 AND s.ProfileID = 1)
THEN 1
ELSE 0
END,
IsPickUp = CASE
WHEN EXISTS(SELECT TOP 1 1 FROM dbo.AddressRole ar WHERE ar.AddressID = a.AddressID AND ar.[AddressRoleTypeID] = 2)
THEN 1
ELSE 0
END,
IsSender = CASE
WHEN EXISTS(SELECT TOP 1 1 FROM dbo.AddressRole ar WHERE ar.AddressID = a.AddressID AND ar.[AddressRoleTypeID] = 3)
THEN 1
ELSE 0
END,
IsDelivery = CASE
WHEN EXISTS(SELECT TOP 1 1 FROM dbo.AddressRole ar WHERE ar.AddressID = a.AddressID AND ar.[AddressRoleTypeID] = 4)
THEN 1
ELSE 0
END,
IsReceiver = CASE
WHEN EXISTS(SELECT TOP 1 1 FROM dbo.AddressRole ar WHERE ar.AddressID = a.AddressID AND ar.[AddressRoleTypeID] = 5)
THEN 1
ELSE 0
END
FROM dbo.[Address] AS a
WHERE a.MFTID = '12345'