为什么将Insert XML插入临时表这么昂贵?

时间:2014-10-03 03:22:03

标签: sql sql-server xml

我有这个简单的XML,我需要将它们插入到临时表中:

DECLARE
    @Handle INT,
    @Categories XML = 
N'<Categories>
  <Category ID="1000003950" />
  <Category ID="1000013931" />
  <Category ID="1000016715" />
  <Category ID="1000016713" />
</Categories>'

DECLARE @TempCategories TABLE (ID INT)

EXEC sp_xml_preparedocument @Handle OUTPUT, @Categories

INSERT INTO @TempCategories
SELECT A.* 
    FROM 
    (
     SELECT ID FROM 
     OPENXML(@Handle, '/Categories/Category', 2) 
      WITH (ID INT '@ID')
    ) A

EXEC sp_xml_removedocument @Handle

SELECT * FROM @TempCategories

并且我使用此临时表中的值与其他一些表执行某些连接以获得SELECT值。

事实证明,最昂贵的操作是上面的代码,83%!

Expensive 83% query

我不明白为什么会这样?

有没有改进此查询?

谢谢。

0 个答案:

没有答案