sql >> Database >  >> RDS >> Sqlserver

Linked Server Insert-Select Performance

De snelste manier is om de gegevens te trekken in plaats van ze te pushen. Wanneer de tabellen worden gepusht, vereist elke rij een verbinding, een invoeging en een ontkoppeling.

Als je de gegevens niet kunt ophalen, omdat je een eenrichtingsvertrouwensrelatie tussen de servers hebt, kun je de hele tabel als een gigantische T-SQL-instructie samenstellen en allemaal tegelijk uitvoeren.

DECLARE @xml XML

SET @xml = (
        SELECT 'insert Remote_Table values (' + '''' + isnull(first_col, 'NULL') + ''',' +
            -- repeat for each col
            '''' + isnull(last_col, 'NULL') + '''' + ');'
        FROM Local_Table
        FOR XML path('')
        ) --This concatenates all the rows into a single xml object, the empty path keeps it from having <colname> </colname> wrapped arround each value

DECLARE @sql AS VARCHAR(max)

SET @sql = 'set nocount on;' + cast(@xml AS VARCHAR(max)) + 'set nocount off;' --Converts XML back to a long string

EXEC ('use RemoteDb;' + @sql) AT RemoteServer


  1. Wat is de gemakkelijkste manier om een ​​recordset van een opgeslagen PostgreSQL-procedure te retourneren?

  2. SqlTransaction gebruiken in C#

  3. Query-optimalisatie in PostgreSQL. UITLEG Basis - Deel 3

  4. Tabelstructuur voor Geo Spatial Data