CREATE PROCEDURE XMLATTRPOS_Int_COUNT_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Num)').value('.', 'int'); DECLARE @cnt bigint SELECT @cnt = SUM(len(word)) FROM Numbers n CROSS APPLY (usrdictwords u JOIN @str.nodes('(/Root/Num)[sql:column("n.Number")]') AS T(Item) ON u.wordno = T.Item.value('@num[1]', 'int')) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); go
CREATE PROCEDURE XMLATTRPOS_Int_JOIN_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Num)').value('.', 'int'); INSERT #Int_JOIN (word) SELECT u.word FROM Numbers n CROSS APPLY (usrdictwords u JOIN @str.nodes('(/Root/Num)[sql:column("n.Number")]') AS T(Item) ON u.wordno = T.Item.value('@num[1]', 'int')) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT word FROM #Int_JOIN TRUNCATE TABLE #Int_JOIN go
CREATE PROCEDURE XMLATTRPOS_Int_UNPACK_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Num)').value('.', 'int') INSERT #Int_UNPACK (number) SELECT n = T.Item.value('@num[1]', 'int') FROM Numbers n CROSS APPLY @str.nodes('(/Root/Num)[sql:column("n.Number")]') AS T(Item) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT number FROM #Int_UNPACK TRUNCATE TABLE #Int_UNPACK go
CREATE PROCEDURE XMLATTRPOS_Str_COUNT_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Word)').value('.', 'int'); DECLARE @cnt bigint SELECT @cnt = SUM(len(guid)) FROM Numbers n CROSS APPLY (@str.nodes('(/Root/Word)[sql:column("n.Number")]') AS T(Item) JOIN usrdictwords u ON u.word = T.Item.value('@Item[1]', 'nvarchar(50)')) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); go
CREATE PROCEDURE XMLATTRPOS_Str_JOIN_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Word)').value('.', 'int'); INSERT #Str_JOIN (wordno, guid) SELECT u.wordno, u.guid FROM Numbers n CROSS APPLY (@str.nodes('(/Root/Word)[sql:column("n.Number")]') AS T(Item) JOIN usrdictwords u ON u.word = T.Item.value('@Item[1]', 'nvarchar(50)')) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT wordno FROM #Str_JOIN TRUNCATE TABLE #Str_JOIN go
CREATE PROCEDURE XMLATTRPOS_Str_UNPACK_test @str xml, @retdata bit = 1, @tookms int = NULL OUTPUT AS DECLARE @start datetime2(3) SELECT @start = sysdatetime() DECLARE @no_of_elem int = @str.query('count(/Root/Word)').value('.', 'int') INSERT #Str_UNPACK (word) SELECT word = T.Item.value('@Item[1]', 'nvarchar(50)') FROM Numbers n CROSS APPLY @str.nodes('(/Root/Word)[sql:column("Number")]') AS T(Item) WHERE n.Number <= @no_of_elem SELECT @tookms = datediff(ms, @start, sysdatetime()); IF @retdata = 1 SELECT word FROM #Str_UNPACK TRUNCATE TABLE #Str_UNPACK go