如果在视图内部或外部过滤视图,这会有所不同吗?
例如,这两个查询之间有什么区别吗?
SELECT Id
FROM MyTable
WHERE SomeColumn = 1
要么
SELECT Id
FROM MyView
WHERE SomeColumn = 1
并且MyView
定义为
SELECT Id, SomeColumn
FROM MyTable
如果源表位于链接服务器上,答案是否有所不同?
我之所以问是因为我必须从链接的服务器查询一个大表(4400万行)两次,并获得结果的汇总。我想知道是否应该创建两个视图来访问数据,每个查询一个视图,还是我可以放弃一个视图和一个WHERE
子句。
1
如果只包含一个表,为什么还要使用视图呢?
—
HLGEM 2012年
@HLGEM安全吗?
—
JNK 2012年
@HLGEM视图实际上包含对不同服务器上的多个数据库的多个查询,并且它们通过进行联接
—
雷切尔2012年
UNION ALL
。使用View比在需要数据时必须重写UNION查询要容易得多。
@datagod,我会记住这一点,谢谢:)在这种情况下,有一个相当小的应用程序,它从一堆服务器中收集数据,运行一些计算并吐出一堆报告。它具有自己的数据库,因为某些计算会占用大量资源,因此我想将其与其他所有内容分开。
—
雷切尔2012年