У меня следующий запрос, который занимает около 50 секунд для 100 записей, однако, используя подсчет, я определил, что набор результатов будет 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
Я думаю, что в особенности операторы select могут быть улучшены, но я не уверен, как.
есть идеи?
любая помощь очень ценится.
другая информация
SQL Server 2005
Все права
Поле xml варьируется для каждого клиента