每个TVP都有以下类型:
TABLE( [variable] nvarchar(30))
我知道我通常可以:
INNER JOIN @TVP
WHERE (SomeVar = @SameVar OR @SameVar IS NULL)
OUTER APPLY
(SELECT TOP(1) * from dbo.SomeTable tbl where tbl.SomeVar in
(select * from @TVP) or not exists (select * from @TVP)
AND tbl.SomeVar = SomeVar)
不幸的是,这种方法非常慢
WHERE (tbl.SomeVar in (SELECT * FROM @TVP) or not exists (SELECT * from @TVP))
这要快得多,但我还是觉得可能不太理想
任何帮助或想法将不胜感激!如果我能澄清什么,请告诉我…提前谢谢
编辑:
所以,我想到了这个,除非有人有更好的解决方案,否则我可能会使用它:
INNER JOIN @TVP tvp
ON (tvp.SomeVar = tbl.SomeVar or tvp.SomeVar is null)