#sql #tsql #openxml
#sql #tsql #openxml
Вопрос:
Я ищу несколько советов по OPENXML. В частности, производительность. Я наблюдаю очень низкую производительность на очень маленьком фрагменте XML.
Что-то в этом вызывает удаленное сканирование. Есть идеи о том, как его настроить?
DECLARE @idoc int
EXEC sp_xml_preparedocument @idoc OUTPUT, @ResourceXML
DECLARE @tmpRes TABLE (ResourceID int, Quantity int, FormID int)
INSERT INTO @tmpRes (ResourceID, Quantity, FormID)
SELECT TMP.ID, TMP.Q, RESC.FormID
FROM OPENXML(@idoc, '/Resources/R') WITH (ID int, Q int) TMP
INNER JOIN dbo.tblResources RESC ON TMP.ID = RESC.ResourceID
WHERE RESC.OrgID = @OrgID
Ответ №1:
Удаленное сканирование — это то, что оптимизатор использует для доступа к XML-данным, поскольку OPENXML фактически является внешним по отношению к database engine, так что этот бит является обычным.
Однако, похоже, существует проблема со статистикой, используемой оптимизатором, в этой здесь статье это обсуждается, предлагаются некоторые рекомендации, но я не знаю, помогает ли это в вашей конкретной ситуации.
Комментарии:
1. Ссылка на статью мертва:(
2. Исправлена ссылка! Надеюсь 🙂