CREATE PROCEDURE XMLELEM$TEXT_Int_COUNT_test @str    xml,
                                             @retdata  bit = 1,
                                             @tookms   int = NULL OUTPUT AS

DECLARE @start datetime2(3)
SELECT @start = sysdatetime()

DECLARE @cnt bigint
SELECT @cnt = SUM(len(word))
FROM   usrdictwords u
JOIN   @str.nodes('/Root/Num') AS T(Item)
  ON   u.wordno = T.Item.value('(./text())[1]', 'int')

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



go

CREATE PROCEDURE XMLELEM$TEXT_Int_EXISTS_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Int_JOIN (word) SELECT u.word FROM usrdictwords u WHERE EXISTS (SELECT * FROM @str.nodes('/Root/Num') AS T(Item) WHERE u.wordno = T.Item.value('(./text())[1]', 'int')) SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT word FROM #Int_JOIN TRUNCATE TABLE #Int_JOIN go
CREATE PROCEDURE XMLELEM$TEXT_Int_JOIN_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Int_JOIN (word) SELECT u.word FROM usrdictwords u JOIN @str.nodes('/Root/Num') AS T(Item) ON u.wordno = T.Item.value('(./text())[1]', 'int') SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT word FROM #Int_JOIN TRUNCATE TABLE #Int_JOIN go
CREATE PROCEDURE XMLELEM$TEXT_Int_UNPACK_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Int_UNPACK (number) SELECT n = T.Item.value('(./text())[1]', 'int') FROM @str.nodes('/Root/Num') AS T(Item) SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT number FROM #Int_UNPACK TRUNCATE TABLE #Int_UNPACK go
CREATE PROCEDURE XMLELEM$TEXT_Str_COUNT_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @cnt bigint SELECT @cnt = SUM(len(guid)) FROM usrdictwords u JOIN @str.nodes('/Root/Word') AS T(Item) ON u.word = T.Item.value('(./text())[1]', 'nvarchar(50)') SELECT @tookms = datediff(ms, @start, sysdatetime()); go
CREATE PROCEDURE XMLELEM$TEXT_Str_EXISTS_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Str_JOIN (wordno, guid) SELECT u.wordno, u.guid FROM usrdictwords u WHERE EXISTS (SELECT * FROM @str.nodes('/Root/Word') AS T(Item) WHERE u.word = T.Item.value('(./text())[1]', 'nvarchar(50)')) SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT wordno FROM #Str_JOIN TRUNCATE TABLE #Str_JOIN go
CREATE PROCEDURE XMLELEM$TEXT_Str_JOIN_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Str_JOIN (wordno, guid) SELECT u.wordno, u.guid FROM usrdictwords u JOIN @str.nodes('/Root/Word') AS T(Item) ON u.word = T.Item.value('(./text())[1]', 'nvarchar(50)') SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT wordno FROM #Str_JOIN TRUNCATE TABLE #Str_JOIN go
CREATE PROCEDURE XMLELEM$TEXT_Str_UNPACK_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() INSERT #Str_UNPACK (word) SELECT word = T.Item.value('(./text())[1]', 'nvarchar(50)') FROM @str.nodes('/Root/Word') AS T(Item) SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT word FROM #Str_UNPACK TRUNCATE TABLE #Str_UNPACK go