Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Производителност на свързан сървър Insert-Select

Най-бързият начин е да изтеглите данните, вместо да ги натискате. Когато таблиците се натискат, всеки ред изисква свързване, вмъкване и прекъсване.

Ако не можете да изтеглите данните, тъй като имате еднопосочна доверителна връзка между сървърите, решението е да конструирате цялата таблица като огромен T-SQL израз и да я изпълните наведнъж.

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. Съхранение на XML данни в SQL Server

  2. Синтаксична грешка близо до 'of' в условието за търсене в пълен текст 'control of'

  3. MSSQL 2008:Вземете последния актуализиран запис по конкретно поле

  4. Поправете съобщение 8114 „Грешка при преобразуването на тип данни varchar в числово“ в SQL Server

  5. Грешка на SQL Server при команда за актуализиране - Възникна сериозна грешка при текущата команда