Производительность удаленного сканирования OPENXML

#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. Исправлена ссылка! Надеюсь 🙂