是否可以从Sql Server 2008中的Xml Data创建索引视图?

dka*_*man 0 xml sql-server indexed-view

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

这可能在2008年或2008年2月?我找不到任何文档说这是添加的东西,但我正在寻找确认,而且我目前还没有方便地访问2008环境.

编辑

我背后的动机是,Xml的数量正在增长到SSRS报告来自Xml的聚合数据变慢的程度.

mar*_*c_s 6

根据您的需要,您可以做的是:

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

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

    ALTER TABLE dbo.YourTable
       ADD ComputedColumns1 AS dbo.SomeFunction(XmlColumn) PERSISTED
    
    Run Code Online (Sandbox Code Playgroud)
  • 使用schemabinding在表和那些计算列上创建视图:

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

    CREATE UNIQUE CLUSTERED INDEX CIX_YourView ON dbo.vYourView(.....)
    
    Run Code Online (Sandbox Code Playgroud)

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