Eri*_*k T 4 performance sql-server sql-server-2014 query-performance
我在 SQL Server (2014) 工作。
我有一个包含 XML 列的表。有一组众所周知的针对该列的查询,我想将其具体化为用于查询目的的持久计算列。但是,出于各种原因,我不想将这些列添加到表中。
我的问题是,有没有办法创建第二个表,其中包含优化器将用于第一个表的索引/键?这可以通过提示或其他机制实现吗?
Selective XML Indexes在幕后为您做这件事。
它允许您在索引中指定 XPath 表达式,当您在查询中使用该表达式时,SQL Server 使用系统表来检索您要查找的值。
例子:
create table dbo.T
(
ID int identity primary key,
XMLDoc xml not null
);
go
create selective xml index SIX_T on dbo.T(XMLDoc) for
(
Node1 = '/root/node1/text()' as sql int
);
go
insert into dbo.T(XMLDoc) values('
<root>
<node1>1</node1>
</root>');
go
select T.XMLDoc.value('(/root/node1/text())[1]', 'int')
from dbo.T;
Run Code Online (Sandbox Code Playgroud)
XML 查询的查询计划显示了一个表扫描T和一个嵌套循环,并通过对主键的查找连接到保存您正在查找的值的系统表中。
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |