-3
Wenn ich die zwei Abfragen ausführen, zeigt Clientstatistiken in SQL Server Management Studio, dass die zweite Abfrage schnellere Gesamtausführungszeit hat. Kann mir jemand sagen, warum die zweite Abfrage schneller ist?Welche SQL-Abfrage wird schneller ausgeführt
SELECT MERCHANT_NO,
(SELECT CASE WHEN CITY IS NULL OR CITY='' THEN m.CITY
ELSE
COALESCE((SELECT c.CITY
FROM CODE_CITY c
WHERE m.CITY=c.CODE_CITY_ID
), m.CITY)
END) AS CITY,
(SELECT CASE WHEN STATE IS NULL OR STATE='' THEN m.STATE
ELSE
COALESCE((SELECT s.STATE
FROM CODE_STATE s
WHERE m.STATE=s.CODE_STATE_ID
), m.STATE)
END) AS STATE,
(SELECT MERCHANT_CAT_DESC FROM MERCHANT_CAT mc WHERE mc.MERCHANT_CAT_ID=m.MERCHANT_CAT_ID) AS MERCHANT_CAT_DESC
FROM MERCHANT m
WHERE 1=1
SELECT MERCHANT_NO,
(SELECT CASE WHEN t.CITY IS NULL OR t.CITY='' THEN m.CITY
ELSE
t.CITY
END AS CITY
FROM(
SELECT
CASE WHEN CITY IS NULL OR CITY='' THEN ''
ELSE
(SELECT c.CITY
FROM CODE_CITY c
WHERE merc.CITY=c.CODE_CITY_ID
)
END AS CITY
FROM MERCHANT merc
WHERE merc.MERCHANT_NO=m.MERCHANT_NO
) t) AS CITY_DESC,
(SELECT CASE WHEN cs.STATE IS NULL OR cs.STATE='' THEN m.STATE
ELSE
cs.STATE
END AS STATE
FROM(
SELECT
CASE WHEN STATE IS NULL OR STATE='' THEN ''
ELSE
(SELECT s.STATE
FROM CODE_STATE s
WHERE merc.STATE=s.CODE_STATE_ID
)
END AS STATE
FROM MERCHANT merc
WHERE merc.MERCHANT_NO=m.MERCHANT_NO
) cs) AS STATE_DESC,
(SELECT MERCHANT_CAT_DESC FROM MERCHANT_CAT mc WHERE mc.MERCHANT_CAT_ID=m.MERCHANT_CAT_ID) AS MERCHANT_CAT_DESC
FROM MERCHANT m
WHERE 1=1
Dies wäre eine gute Zeit, um zu lernen, wie man 'EXPLAIN' verwendet, was wahrscheinlich mehr Details über die zwei Abfragen ergeben wird als jede Antwort, die Sie erhalten könnten. –
Sie erhalten eine noch schnellere Ausführungszeit, wenn Sie beide Abfragen von korrelierten Unterabfragen in innere Verknüpfung konvertieren – cha
Ausführungsplan aktivieren und beide Abfragen ausführen, können Sie selbst sehen – TheGameiswar