CREATE PROCEDURE XMLATTR$TMPTBL_Int_JOIN_test @str    xml,
                                              @tookms int OUTPUT AS

DECLARE @start datetime
SELECT @start = getdate()

CREATE TABLE #xmlint (num int NOT NULL)

INSERT #xmlint (num)
   SELECT T.Item.value('@num', 'int')
   FROM   @str.nodes('/Root/Num') AS T(Item)

INSERT Int_JOIN(word)
SELECT u.word
FROM   usrdictwords u
JOIN   #xmlint x ON u.wordno = x.num

SELECT @tookms = datediff(ms, @start, getdate());

SELECT word FROM Int_JOIN

TRUNCATE TABLE Int_JOIN
go


CREATE PROCEDURE XMLATTR$TMPTBL_Str_JOIN_test @str    xml,
                                              @tookms int OUTPUT AS

DECLARE @start datetime
SELECT @start = getdate()

CREATE TABLE #xmlstr (str nvarchar(50) COLLATE database_default NOT NULL)

INSERT #xmlstr (str)
   SELECT T.Item.value('@Item', 'nvarchar(50)')
   FROM   @str.nodes('/Root/Word') AS T(Item)

INSERT Str_JOIN(wordno, guid)
SELECT u.wordno, u.guid
FROM   usrdictwords u
JOIN   #xmlstr x ON u.word = x.str

SELECT @tookms = datediff(ms, @start, getdate());

SELECT wordno FROM Str_JOIN

TRUNCATE TABLE Str_JOIN
go