最近我在我的查詢中添加了outer apply。從那以後,這個查詢就會一直存在我知道與之相關的表格是數據庫中最大的表格的原因之一。外套的替代方案是什麼?
select
a.*,
b.*,
BTab.*,
BTTab.*
from
tableA a
join tableB b ON a.ID = b.UID
join *****
left join *******
....
....
....
outer apply
(SELECT TOP 1 *
FROM
biggestTable bt
WHERE
bt.id = a.id
and a.id <> 100
ORDER BY a.datetime desc) BTab
Outer apply
(SELECT TOP 1 *
FROM
biggestTable btt
WHERE
btt.id = a.id
AND btt.DateTime <> '1948-01-01 00:00:00.000'
and btt.value = 0
order by btt.datetime desc) BTTab
where
..................
.................
....................
.................
有沒有比使用outer apply更好的解決方案?
顯然我在這裏失去了一些東西。我對APPLY的瞭解是調用一個表值函數,但你沒有TVF。 APPLY在這個查詢中做了什麼?這是否就像內聯TVF? – Paparazzi 2012-02-22 17:18:40
@BalamBalam - OP有兩個相關的子查詢。兩者都是以'a.id'作爲參數的Inline TableValuedFunctions。 – MatBailie 2012-02-22 17:21:38