【发布时间】:2026-01-26 00:25:02
【问题描述】:
我需要经常运行一个查询来聚合来自不同表的数据,比如
select
Name, Code, Date From TableA
union
select
Surname, TheCode, TheDate From TableB
union
[...] -- this stands for some more select statements
union
select
NickName, MyCode, getdate() from tableC
(这个例子很简单,但就像这样:我无法重构数据库以将我需要的所有数据放在一个表中!)。
此查询可以返回 100.000 条记录,即使由于 WHERE 条件通常会返回 400-500 条记录。
我正在考虑使用视图来简化查询,但这有意义吗?查询视图更快是因为视图是预先计算的(我不确定)还是视图在查询时执行?我的意思是:如果 10 个用户请求相同的数据,对带有连接的表运行 10 个查询,或者对一个视图运行 10 个查询,是一样的还是有视图更好? (我的意思是如果视图只执行一次更好,如果不是完全一样)。
此外,我无法使用索引视图,因为我使用的是UNION STATEMENTS。
视图的优点是我还可以轻松地对视图执行选择 count(*),而要对表执行此操作,我应该编写几乎 2 个不同的查询:一个(我上面写的那个)用于获取记录,另外一个(修改上面的一个)用于计数。
【问题讨论】:
标签: sql-server sql-server-2008 views