我有以下查詢需要大約50秒的100個記錄,但使用計數我已經確定結果集將是100000個項目 (這是一個報告),所以我正在尋找方法以提高性能。在大型數據集上進行交叉連接的Xml查詢。如何提高性能
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
我認爲,尤其是select語句可以提高,但我不知道如何。
有什麼想法? 任何幫助,非常感謝。
其他信息 SQL Server 2005中 所有權利 XML字段根據客戶變化對XML列
XML列是否在其上有[XML索引](http://msdn.microsoft.com/zh-cn/library/bb934097(v = SQL.100).aspx)?如果他們不看看MSDN文章[SQL Server 2005中的XML索引](http://msdn.microsoft.com/zh-cn/library/ms345121(v = SQL.90).aspx) –