0

我从2005 文档中看到,您无法从 Xml 列创建索引视图。

这可能在 2008 年或 2008R2 中实现吗?我找不到任何说明这是已添加但正在寻找确认的文档,并且我目前无法方便地访问 2008 环境。

编辑

我这样做的动机是 Xml 的数量正在增长到 SSRS 报告来自 Xml 的聚合数据变得缓慢的程度。

4

2 回答 2

6

根据您的需要,您可以执行以下操作:

  • 创建一组存储函数,从 XML 中提取某些关键信息(函数接收 XML 作为输入,使用 XPath/XQuery 提取信息,返回 VARCHAR 或 INT 或其他值)

    CREATE FUNCTION dbo.SomeFunction(@Input XML)
    RETURNS VARCHAR(20)
    WITH SCHEMABINDING
    AS BEGIN
       ......
    END
    
  • 使用以下关键字将这些关键位作为引用这些函数的计算列PERSISTED添加到您的基表中:

    ALTER TABLE dbo.YourTable
       ADD ComputedColumns1 AS dbo.SomeFunction(XmlColumn) PERSISTED
    
  • 使用模式绑定在表和那些计算列上创建视图:

    CREATE VIEW vYourView 
    WITH SCHEMABINDING
    AS  
          SELECT (list of columns)
          FROM dbo.YourTable
    
  • 在该视图上创建一个唯一的聚集索引 - 除非您违反了索引视图的任何要求,否则应该可以正常工作:

    CREATE UNIQUE CLUSTERED INDEX CIX_YourView ON dbo.vYourView(.....)
    

如果您需要从 XML 列中提取少量关键信息,这可以正常工作 - 对于大量 XML 元素/值,绝对不建议这样做。

于 2011-07-08T04:47:51.360 回答
3

我不相信这是可能的。如果没有更好地解释您正在尝试做什么,我可以提供的一个建议是在插入之前将 XML 分开(可能使用而不是触发器,或者在应用程序层执行此切碎)并存储您的部分希望用于单独的非 XML 列中的索引视图。

于 2011-07-07T22:53:16.710 回答