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

リンク サーバーの挿入と選択のパフォーマンス

    最も速い方法は、データをプッシュするのではなくプルすることです。テーブルがプッシュされると、すべての行で接続、挿入、および切断が必要になります。

    サーバー間に一方向の信頼関係があるためにデータをプルできない場合、回避策は、テーブル全体を巨大な 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. バイナリログオプションがオンのときにSUPER特権が無効になるのはなぜですか?

    2. MySQLワークベンチでプロシージャを作成して実行する方法

    3. データ分析とデータサイエンス:違いは何ですか?

    4. SQL:合計が特定の値になる行を選択する方法