-3
當我運行這兩個查詢時,SQL Server Management Studio中的客戶端統計信息顯示第二個查詢的總執行時間更快。誰能告訴我爲什麼第二個查詢更快?哪個SQL查詢執行得更快
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
這將是學習如何使用'EXPLAIN'的好時機,它可能會揭示關於這兩個查詢的更多細節,而不是您可能收到的任何答案。 –
將兩個查詢從相關子查詢轉換爲內部連接時,您將獲得更快的執行時間 – cha
打開執行計劃並運行兩個查詢,您可以自己看到 – TheGameiswar