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

Wydajność wstawiania-wybierania dla serwera połączonego

Najszybszym sposobem jest pobieranie danych, a nie przesyłanie ich. Po wypchnięciu tabel każdy wiersz wymaga połączenia, wstawienia i rozłączenia.

Jeśli nie możesz pobrać danych, ponieważ masz jednokierunkową relację zaufania między serwerami, obejście tego problemu polega na skonstruowaniu całej tabeli jako gigantycznej instrukcji T-SQL i uruchomieniu jej wszystkich naraz.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:nie można wstawić jawnej wartości do kolumny sygnatury czasowej

  2. Zindeksowane widoki i lewe połączenia raz na zawsze

  3. Uzyskaj godziny i minuty (GG:MM) od daty

  4. SSRS wybierający wyniki na podstawie listy rozdzielanej przecinkami

  5. Grupuj podobne obiekty w różnych zakresach dat, aby uzyskać daty minimalne i maksymalne w SQL Server