【发布时间】:2011-12-05 15:36:50
【问题描述】:
我有以下查询,100 条记录大约需要 50 秒,但是使用计数我确定结果集将是 100 000 项 (这是为了报告)所以我正在寻找提高性能的方法。
SELECT TOP 200
OL.*,
LI.LineItem.value('Field[@name="storename"][1]/@value', 'varchar(MAX)') AS storename,
LI.LineItem.value('Field[@name="pwnumber"][1]/@value', 'varchar(MAX)') AS pwnumber,
LI.LineItem.value('Field[@name="department"][1]/@value', 'varchar(MAX)') AS department,
LI.LineItem.value('Field[@name="item"][1]/@value', 'varchar(MAX)') AS item,
LI.LineItem.value('Field[@name="barcode"][1]/@value', 'varchar(MAX)')AS barcode,
LI.LineItem.value('Field[@name="oldprice"][1]/@value', 'varchar(MAX)')AS oldprice,
LI.LineItem.value('Field[@name="newprice"][1]/@value', 'varchar(MAX)')AS newprice,
LI.LineItem.value('Field[@name="goodsgroup"][1]/@value', 'varchar(MAX)')AS goodsgroup,
LI.LineItem.value('Field[@name="startdate"][1]/@value', 'varchar(MAX)')AS startdate,
LI.LineItem.value('Field[@name="prodgroup"][1]/@value', 'varchar(MAX)')AS prodgroup,
LI.LineItem.value('Field[@name="season"][1]/@value', 'varchar(MAX)')AS season,
LI.LineItem.value('Field[@name="pkquantity"][1]/@value', 'varchar(MAX)')AS pkquantity,
LI.LineItem.value('Field[@name="recordtype"][1]/@value', 'varchar(MAX)')AS recordtype
FROM [lines] OL
LEFT JOIN [Clineextension] OLE ON OL.OrderLineId = OLE.OrderLineId
CROSS APPLY OLE.LineItems.nodes('/LineItems/LineItem') as LI(LineItem)
WHERE Customer = 1302
AND StatusId > 1
我认为特别是选择语句可以改进,但我不确定如何。
有什么想法吗? 非常感谢任何帮助。
其他信息 sql server 2005 所有权利 xml 字段因客户而异
【问题讨论】:
-
XML 列上是否有XML indexes?如果他们不看MSDN文章XML Indexes in SQL Server 2005
标签: sql-server xml sql-server-2005 xpath