你们认为哪一个更高效(负载更少)?
SELECT t1.a,
(CASE
WHEN t1.p=1 THEN t2.g
WHEN t1.p=2 THEN t3.g
END) as v
FROM t1
LEFT JOIN t2 ON t1.x=t2.x
LEFT JOIN t3 ON t1.y=t3.y
或者
SELECT
t1.a, t2.v
FROM t1
outer apply (
SELECT v= CASE
WHEN t1.p=1 THEN (SELECT v FROM t2 WHERE t1.x=t2.x)
WHEN t1.p=2 THEN (SELECT v FROM t3 WHERE t1.y=t3.y)
END
) t2
只是想弄清楚sql引擎是如何工作的..
[我想在这个问题中研究什么]
在第一次查询中,这些表t2
将t3
始终被调用,但在第二次查询中,只有在案例匹配时才会调用它们(因此负载较少 = 只检查 2 个表而不是 3 个表)排)?