sql >> データベース >  >> RDS >> Sqlserver

SQL プロセスの XML パフォーマンス:テーブル内の列への挿入

    最初に試すのは、 text() を指定することです ノードを XML データ型を使用して、SQL Server がテキスト要素の詳細な検索を行わないようにします。

    INSERT INTO SUPPLIER
       (IDCONO
       ,IDSUNO
       ,IDSUTY)
    SELECT
       T.C.value('(IDCONO/text())[1]', 'VARCHAR(50)') as IDCONO,
       T.C.value('(IDSUNO/text())[1]', 'VARCHAR(50)') as IDSUNO,
       T.C.value('(IDSUTY/text())[1]', 'VARCHAR(50)') as IDSUTY
    FROM @data.nodes('/Suppliers/Supplier') T(C)
    

    これで十分でない場合は、代わりに OPENXML を試してみます。

    DECLARE @idoc INT
    EXEC sp_xml_preparedocument @idoc OUT, @data
    
    INSERT INTO SUPPLIER
       (IDCONO
       ,IDSUNO
       ,IDSUTY)
    SELECT IDCONO, IDSUNO, IDSUTY
    FROM OPENXML(@idoc, '/Suppliers/Supplier', 2) WITH
            (IDCONO VARCHAR(50),
             IDSUNO VARCHAR(50),
             IDSUTY VARCHAR(50))
    
    
    EXEC sp_xml_removedocument @idoc
    



    1. phpmysql_connect警告無効

    2. MySQL:GROUPBYに含まれていません

    3. UPDLOCK で上位 1 を選択し、READPAST でテーブル全体に排他ロックを設定します

    4. 奇数のINNERJOIN構文とカプセル化