CREATE PROCEDURE XMLATTR$TVAR_Int_JOIN_test @str xml, @tookms int OUTPUT AS DECLARE @start datetime SELECT @start = getdate() DECLARE @data TABLE (num int NOT NULL) INSERT @data (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 @data d ON u.wordno = d.num SELECT @tookms = datediff(ms, @start, getdate()); SELECT word FROM Int_JOIN TRUNCATE TABLE Int_JOIN go CREATE PROCEDURE XMLATTR$TVAR_Str_JOIN_test @str xml, @tookms int OUTPUT AS DECLARE @start datetime SELECT @start = getdate() DECLARE @data TABLE (str nvarchar(50) NOT NULL) INSERT @data (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 @data d ON u.word = d.str SELECT @tookms = datediff(ms, @start, getdate()); SELECT wordno FROM Str_JOIN TRUNCATE TABLE Str_JOIN go