我从2005 文档中看到,您无法从 Xml 列创建索引视图。
这可能在 2008 年或 2008R2 中实现吗?我找不到任何说明这是已添加但正在寻找确认的文档,并且我目前无法方便地访问 2008 环境。
编辑
我这样做的动机是 Xml 的数量正在增长到 SSRS 报告来自 Xml 的聚合数据变得缓慢的程度。
我从2005 文档中看到,您无法从 Xml 列创建索引视图。
这可能在 2008 年或 2008R2 中实现吗?我找不到任何说明这是已添加但正在寻找确认的文档,并且我目前无法方便地访问 2008 环境。
编辑
我这样做的动机是 Xml 的数量正在增长到 SSRS 报告来自 Xml 的聚合数据变得缓慢的程度。
根据您的需要,您可以执行以下操作:
创建一组存储函数,从 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 元素/值,绝对不建议这样做。
我不相信这是可能的。如果没有更好地解释您正在尝试做什么,我可以提供的一个建议是在插入之前将 XML 分开(可能使用而不是触发器,或者在应用程序层执行此切碎)并存储您的部分希望用于单独的非 XML 列中的索引视图。