dka*_*man 0 xml sql-server indexed-view
我从2005年的文档中看到,您无法从Xml列创建索引视图.
这可能在2008年或2008年2月?我找不到任何文档说这是添加的东西,但我正在寻找确认,而且我目前还没有方便地访问2008环境.
编辑
我背后的动机是,Xml的数量正在增长到SSRS报告来自Xml的聚合数据变慢的程度.
根据您的需要,您可以做的是:
创建一组存储函数,从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元素/值.