【问题标题】:SQL Server Indexed View syntax for joined DB连接数据库的 SQL Server 索引视图语法
【发布时间】:2010-11-18 22:06:34
【问题描述】:

我正在尝试在我的视图上设置索引。 第一个错误是 1939,需要架构绑定。

好的,没问题。

ALTER VIEW xyz WITH SCHEMABINDING AS abc

现在,在这个 VIEW 中,我正在使用一个本地表 [dbo].][ReleantTable] 和两个连接表 来自同一服务器上的其他数据库:

OtherDbName..OtherRelevantTable

更改 VIEW 失败,说明 OtherDbName..OtherRelevantTable 对架构绑定无效。

我猜这只是一个语法问题。谁能给我提示 如何处理我的 OtherDb?

【问题讨论】:

    标签: sql-server indexing view


    【解决方案1】:

    为了创建索引视图,您的基表必须位于同一数据库中。

    有关详细信息,请参阅以下 Microsoft 联机丛书参考:

    http://msdn.microsoft.com/en-us/library/ms191432(SQL.90).aspx

    【讨论】:

    • 感谢您的回答。实际上,出于性能原因,我迫切需要该索引。有没有办法让该视图的单个字段被索引,尽管它也从其他“地方”收集数据?
    • @KB22:很遗憾,要回答您的进一步询问,答案是否定的。您会看到,为了在视图上创建一个非聚集索引,您首先必须创建一个聚集索引。为了做到这一点,SQL Server 必须物理实现视图中的表数据,并且这样做必须验证视图的全部内容。当视图包含分布在不同数据库中的基表时,无法执行此操作。
    • 对于我之前的 cmets,我建议一个好的起点是构建满足您的选择要求的跨数据库查询,然后查看执行计划。确保所有连接谓词和搜索参数都有合适的索引等。
    • @John:感谢您提供详尽的答案。我阅读了更多内容并使用“预先定位的表”解决了这个问题,该表包含相关数据库中的相关数据。无论如何,又学到了一些教训。 ;) k
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2012-03-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多