<tfoot id='eJlU0'></tfoot>
<i id='eJlU0'><tr id='eJlU0'><dt id='eJlU0'><q id='eJlU0'><span id='eJlU0'><b id='eJlU0'><form id='eJlU0'><ins id='eJlU0'></ins><ul id='eJlU0'></ul><sub id='eJlU0'></sub></form><legend id='eJlU0'></legend><bdo id='eJlU0'><pre id='eJlU0'><center id='eJlU0'></center></pre></bdo></b><th id='eJlU0'></th></span></q></dt></tr></i><div id='eJlU0'><tfoot id='eJlU0'></tfoot><dl id='eJlU0'><fieldset id='eJlU0'></fieldset></dl></div>

  • <legend id='eJlU0'><style id='eJlU0'><dir id='eJlU0'><q id='eJlU0'></q></dir></style></legend>

      1. <small id='eJlU0'></small><noframes id='eJlU0'>

          <bdo id='eJlU0'></bdo><ul id='eJlU0'></ul>

        SQL 中 XML 粉碎的替代方案

        时间:2023-06-06
        <i id='bSbQN'><tr id='bSbQN'><dt id='bSbQN'><q id='bSbQN'><span id='bSbQN'><b id='bSbQN'><form id='bSbQN'><ins id='bSbQN'></ins><ul id='bSbQN'></ul><sub id='bSbQN'></sub></form><legend id='bSbQN'></legend><bdo id='bSbQN'><pre id='bSbQN'><center id='bSbQN'></center></pre></bdo></b><th id='bSbQN'></th></span></q></dt></tr></i><div id='bSbQN'><tfoot id='bSbQN'></tfoot><dl id='bSbQN'><fieldset id='bSbQN'></fieldset></dl></div>

              <legend id='bSbQN'><style id='bSbQN'><dir id='bSbQN'><q id='bSbQN'></q></dir></style></legend>

                <bdo id='bSbQN'></bdo><ul id='bSbQN'></ul>
                    <tbody id='bSbQN'></tbody>
                • <small id='bSbQN'></small><noframes id='bSbQN'>

                  <tfoot id='bSbQN'></tfoot>
                  本文介绍了SQL 中 XML 粉碎的替代方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我尝试使用 XQuery .nodes 将 XML 分解到一个临时表中,如下所示.但是,我遇到了性能问题.粉碎需要很多时间.请给我一个关于此替代方案的想法.

                  I tried to shred XML into a temporary table by using XQuery .nodes as follows. But, I got performance problem. It is taking much time to shred. Please give me an idea on alternatives for this.

                  我的要求是将批量记录传递给存储过程并解析这些记录并根据记录值执行一些操作.

                  My requirement is to pass bulk records to a stored procedure and parse those records and do some operation based on record values.

                   CREATE TABLE #DW_TEMP_TABLE_SAVE(  
                  [USER_ID] [NVARCHAR](30), 
                  [USER_NAME] [NVARCHAR](255)
                  )   
                  
                  insert into #DW_TEMP_TABLE_SAVE
                     select 
                         A.B.value('(USER_ID)[1]', 'nvarchar(30)' ) [USER_ID], 
                         A.B.value('(USER_NAME)[1]', 'nvarchar(30)' ) [USER_NAME]
                     from 
                         @l_n_XMLDoc.nodes('//ROW') as A(B) 
                  

                  推荐答案

                  在 values 子句中指定 text() 节点.

                  Specify the text() node in your values clause.

                  insert into #DW_TEMP_TABLE_SAVE
                  select A.B.value('(USER_ID/text())[1]', 'nvarchar(30)' ) [USER_ID], 
                         A.B.value('(USER_NAME/text())[1]', 'nvarchar(30)' ) [USER_NAME]
                  from @l_n_XMLDoc.nodes('/USER_DETAILS/RECORDSET/ROW') as A(B)
                  

                  不使用 text() 将创建一个查询计划,该计划尝试将来自指定节点的值与其所有子节点连接起来,我想在这种情况下您不希望这样.如果您不使用 text(),则查询的连接部分由 UDX 运算符完成,最好不要在您的计划中使用它.

                  Not using text() will create a query plan that tries concatenate the values from the specified node with all its child nodes and I guess you don't want that in this scenario. The concatenation part of the query if you don't use text() is done by the UDX operator and it is a good thing not to have it in your plan.

                  另一件要尝试的事情是 OPENXML.在某些情况下(大型 xml 文档),我发现 OPENXML 执行速度更快.

                  Another thing to try is OPENXML. In some scenarios (large xml documents) I have found that OPENXML performs faster.

                  declare @idoc int
                  exec sp_xml_preparedocument @idoc out, @l_n_XMLDoc
                  
                  insert into #DW_TEMP_TABLE_SAVE
                  select USER_ID, USER_NAME
                  from openxml(@idoc, '/USER_DETAILS/RECORDSET/ROW', 2) 
                    with (USER_ID  nvarchar(30), USER_NAME nvarchar(30))
                  
                  exec sp_xml_removedocument @idoc
                  

                  这篇关于SQL 中 XML 粉碎的替代方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:创建 XML 文件时在 SQL 中联合 下一篇:SQL 数据作为 XML 元素

                  相关文章

                  最新文章

                  <tfoot id='9Cymf'></tfoot>
                • <legend id='9Cymf'><style id='9Cymf'><dir id='9Cymf'><q id='9Cymf'></q></dir></style></legend>
                    <bdo id='9Cymf'></bdo><ul id='9Cymf'></ul>
                • <small id='9Cymf'></small><noframes id='9Cymf'>

                    <i id='9Cymf'><tr id='9Cymf'><dt id='9Cymf'><q id='9Cymf'><span id='9Cymf'><b id='9Cymf'><form id='9Cymf'><ins id='9Cymf'></ins><ul id='9Cymf'></ul><sub id='9Cymf'></sub></form><legend id='9Cymf'></legend><bdo id='9Cymf'><pre id='9Cymf'><center id='9Cymf'></center></pre></bdo></b><th id='9Cymf'></th></span></q></dt></tr></i><div id='9Cymf'><tfoot id='9Cymf'></tfoot><dl id='9Cymf'><fieldset id='9Cymf'></fieldset></dl></div>