【发布时间】:2011-04-01 21:27:40
【问题描述】:
使用 Sql server Xml 列以确保快速性能和易于报告的最佳实践是什么?
如何设置栏目? 您是否将其保留为未键入? 或将其与架构相关联?
将 xml 列与架构相关联会提高查询性能吗?
我们对xml列的使用如下:
A.>在每个客户的基础上,我们可以定义灵活的数据存储,而无需彻底检查我们的数据库。
B.>我们需要为每个客户构建报告视图,返回他们的数据,就好像它是一个简单的表格(对于水晶报告或 Sql Server Reporting Services)。
我们目前用来查询的语法如下:
SELECT
Id,
doc.value('@associatedId','nvarchar(40)') as AssocId,
doc.value('@name1', 'nvarchar(255)') as Name1,
doc.value('@name2', 'nvarchar(255)') as Name2,
doc.value('@name3', 'nvarchar(255)') as Name3,
doc.value('@number', 'nvarchar(255)') as Number
From OrderDetails
CROSS APPLY OrderDetails.XmlData.nodes('//root/reviewers/reviewer') as XmlTable(doc)
有没有更快的方法来做到这一点?这个查询在一个有 100 万条记录的表中运行缓慢,但目前只有 800 条有 xml 数据!
谢谢
皮特
【问题讨论】:
-
一定要创建 XML 索引!
标签: sql-server database-design xml-column