我有这个简单的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%!
我不明白为什么会这样?
有没有改进此查询?
谢谢。