Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wydajność XML procesu SQL:wstawiaj do kolumn w tabeli

Najpierw spróbowałbym określić text() węzła podczas używania typu danych XML, aby uniemożliwić SQL Server wykonywanie głębokiego wyszukiwania elementów tekstowych.

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)

Jeśli to nie wystarczy, spróbowałbym zamiast tego 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze podejście do obliczania sum — aktualizacja dla SQL Server 2012

  2. Określ rozmiar wiersza dla tabeli

  3. Tworzenie widoku przy użyciu procedury składowanej

  4. Czy kolumna klucza podstawowego Sequential Guid powinna być indeksem klastrowym?

  5. identyfikator pracownika automatycznie generuj z prefiksem