-3
2つのクエリを実行すると、SQL Server Management Studioのクライアント統計では、2番目のクエリの実行時間が短縮されます。誰かが2番目のクエリがより速い理由を教えてもらえますか?どの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'の使い方を学ぶのに適しています。これはおそらく、あなたが受け取るかもしれない答えよりも2つの質問の詳細を明らかにするでしょう。 –
相関サブクエリから内部結合に両方のクエリを変換すると実行時間がさらに短縮されます – cha
実行プランをオンにして両方のクエリを実行すると、自分で見ることができます – TheGameiswar