【发布时间】:2017-01-02 10:49:50
【问题描述】:
我有如下代码视图
create view v1
as
section1 --I get column1 data here
union all
section2 --I get column2 data here
union all
section3 --I get column3 data here
现在,这个视图在多个地方使用,并且将在 column1 或 2 或 3 上连接,具体取决于我们使用它的地方,如下所示。
select * from tabl1 t1 join v1 on t1.column1 = v1.column1
select * from tabl1 t2 join v1 on t2.column2 = v1.column2
等
但如果它在 column1 上加入,则不需要计算 column2,3 即第 2,3 节。根据当前的业务规则,我们不能将视图拆分为多个视图。现在,我需要的是,如果视图在 column1 上加入,则不应计算 section2,3 和 column2,section1,3 和 column3,section1,2 的情况类似
有人可以帮助我如何实现这一目标
谢谢, 斯里
【问题讨论】:
-
能分享一下预期输出的结果集结构吗
-
有时 SQL Server 优化器可以自己忽略
union all中不需要的部分。你看过查询计划吗? -
A View 是(有时)复杂的 SELECT 的简写。如果您需要一个变量视图,请定义不同的视图,每种情况一个或简单地使用显式 SELECT(s)。如果您关心的是性能,这将是最有效的方法。
标签: sql sql-server sql-server-2008 sql-server-2012