我想知道这是否是一种不好的做法,或者总的来说这是否是正确的方法。
假设我创建了一个 View ,该 View 组合了几个表中的一些属性。
我的问题是,我需要做什么才能像查询表一样查询此 View 而不用担心性能?
原始表中的所有属性都已建立索引,我担心结果 View 将包含数十万条记录,我希望根据用户输入缩小范围。
我想避免的是,生成此 View 的代码的多个版本带有一些额外的“where”条件,以方便用户输入过滤。
例如,假设我的 View 具有此标题VIEW(Name, Type, DateEntered)
,这可能有 100,000 多行(可能有数百万行)。我希望能够在 SQL Server 中创建此 View ,然后在我的应用程序中编写如下查询:
从 MyView 中选择名称、类型、输入日期,其中输入日期位于 @date1 和 @date2 之间;
基本上,我正在对需要运行的一系列报告的数据进行非规范化,并且我想集中从何处提取数据,但也许我没有从正确的角度看待这个问题,所以我愿意接受其他方法来解决这个问题。
最佳答案
My question, what do I need to do so I can query against this view as if it were a table without worrying about performance?
SQL Server
在 View 取消嵌套方面非常出色。
您的查询将像在查询本身中使用 View 的查询一样高效。
这意味着
CREATE VIEW myview AS
SELECT *
FROM /* complex joins */
SELECT *
FROM mytable
JOIN myiew
ON …
和
SELECT *
FROM mytable
JOIN (
SELECT *
FROM /* complex joins */
) myview
ON …
将具有相同的性能。
关于sql - 查询 View 时的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875980/