【问题标题】:Is Views update after an Insert(or update) into base tables Immediately插入(或更新)到基表后视图是否立即更新
【发布时间】:2011-12-10 09:55:06
【问题描述】:

我有一个关于视图的问题。考虑我们有一个视图,我在它的基表中插入一条记录。插入后我的视图是否会更新,或者我应该执行SELECT 来更新?

我认为我的问题很明显 - 只是查看 SELECT 或者它的结果保存在数据库中,如果它是基表,那么当它更新时它就会变成更新?

【问题讨论】:

    标签: sql sql-server sql-server-2008 view


    【解决方案1】:

    普通视图不会被持久化。如果插入了可更新视图,则从视图(或受影响的基础表)中进行选择将显示您的结果。

    不完全确定您要解决什么问题。视图(非索引)足以满足大多数应用程序。

    查看索引视图:Improving Performance with SQL Server 2008 Indexed Views:

    在非索引视图的情况下,视图的必要部分 解决查询是在运行时实现的。任何计算,如 因为连接或聚合是在每个查询执行期间完成的 查询引用视图。 在唯一聚集索引被 在视图上创建,视图的结果集立即物化 并持久化在数据库中的物理存储中,节省开销 在执行时执行这种昂贵的操作。

    索引视图的典型用途是当您需要执行昂贵的聚合时。

    【讨论】:

    • 您说的是普通视图。我们还有其他视图类型吗?我希望我的数据持久化,并且在我的基表中的每个insert 之后,我的视图都会更新
    • 是的,另一种称为索引视图
    • 索引视图是否保留数据?
    • @BrandonMoore:视图上的聚集索引是该视图的数据,这就是持久化的内容(聚集索引及其所有页面 --> 所有数据页面)
    • @BrandonMoore: 聚集索引 IS 数据 - 所以如果聚集索引被持久化,实际上视图的整个 data 是坚持
    【解决方案2】:

    将视图视为一个选择语句。不必写出整个 select 语句,您只需选择视图,它就会为您运行该 select 语句。所以是的,你对基础表所做的任何事情都将自动在视图中可见。

    【讨论】:

    • 简单明了的答案+1
    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 2013-12-05
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多