CAR*_*OTH 6 xml sql-server indexing sql-server-2005
我有一个应用程序将xml文档存储在SQL Server的列中.XML文档的结构类似于下面的结构:
<document>
<item>
...
<phoneNumber>0123456789</phoneNumber>
....
</item>
<item>
...
<phoneNumber>9876543210</phoneNumber>
....
</item>
...
</document>
Run Code Online (Sandbox Code Playgroud)
基本上,此列存储一组客户信息.XML文档可以在<item>元素中包含不同的子元素,但是其中一些子元素包含在所有文档中(例如上例中的<phoneNumber>元素).
这样我就可以在表中包含以下值的一行
<document>
<item>
<firstName>Carlos</firstName>
<lastName>Loth</lastName>
<phoneNumber>0123456789</phoneNumber>
</item>
<item>
<firstName>Alberto</firstName>
<lastName>Tomatis</lastName>
<phoneNumber>987654321</phoneNumber>
</item>
</document>
Run Code Online (Sandbox Code Playgroud)
另一行包含此文档
<document>
<item>
<orderNumber>XYZ</orderNumber>
<phoneNumber>0123456789</phoneNumber>
</item>
<item>
<orderNumber>ABC</orderNumber>
<phoneNumber>987654321</phoneNumber>
</item>
</document>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,是否可以根据document/item/phoneNumber元素在该XML列上创建索引?我需要执行一个查询,根据phoneNumber信息返回存储在其他"固定已知"列中的信息.
有什么建议或想法吗?
在此先感谢,Carlos Loth.
是的。
SQL Server 2005 支持四种不同类型的 XML 索引。由于 XML 索引与关系索引有些不同,因此在我们讨论如何使用它们以获得最大效率之前,有必要了解它们的实现。有一个“主 XML 索引”和三种不同风格的“辅助 XML 索引”。
有关详细信息,请参阅这篇 MSDN 文章
您需要先创建主 XML 索引,然后才能定义辅助 XML 索引:
CREATE PRIMARY XML INDEX xml_idx ON your_table(xml_column)
CREATE XML INDEX xml_idx ON your_table(xml_column) FOR PROPERTY
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3642 次 |
| 最近记录: |