【发布时间】:2010-10-09 05:14:44
【问题描述】:
直接从表中选择数据或从视图中选择数据有什么区别?
每个人的最佳用途是什么?
【问题讨论】:
直接从表中选择数据或从视图中选择数据有什么区别?
每个人的最佳用途是什么?
【问题讨论】:
根据 Microsoft 的说法,如果您在 sql server 2000/2005/2008 中使用 indexed 视图,会有性能优势。
索引视图可以通过以下方式提高查询性能
1. 聚合可以预先计算并存储在索引中,以最大限度地减少查询执行期间的昂贵计算。
2. 可以预先加入表并存储结果数据集。
3. 可以存储连接或聚合的组合
但就像表上的索引一样,视图上的索引也会产生修改开销。因此,只有在运行时提高速度的好处超过更新视图索引所需的时间时才向视图添加索引。
以下链接提供了更多信息(关于何时使用什么)。
【讨论】:
在大多数数据库中,它们在功能上是可互换的(忽略物化视图,无论如何它们是完全不同的东西。)创建视图有两个常见的原因。 1. 一种抽象(和列别名)机制,以及 2. 用于权限和访问控制。但至于效率,这不是问题。
【讨论】:
这取决于数据库和视图的定义。
为列起别名或执行简单计算的简单视图与直接进行查询没有区别。
但是,在某些情况下,视图可能会慢得多。一个例子:在 Oracle 中,如果嵌套视图查询太多(例如,一个视图使用另一个作为表,而另一个视图使用另一个,等等),您可能会产生糟糕的性能。
一般来说,您需要使用特定的数据库和有问题的查询进行测试。
【讨论】:
这样想:
视图只是存在于服务器上并由 SQL 引擎编译的选择语句。
通常使用视图来限制/简化表格中的结果。
问候 克
【讨论】: