3

SQL Server Management Studioを使用して、テーブルの内容全体をSQLServerからMySQLマシン上の同一のテーブルにコピーします。MySQLデータベースは、MySQLODBC5.1ドライバーを使用してリンクサーバーとしてManagementStudioに接続されています。単純なステートメントの使用は問題なく機能しますが、実行速度は非常に遅くなります。

INSERT INTO openquery(MYSQL, 'select * from Table1')
SELECT * from MSSQL..Table2

約450,000レコードのテーブルがあり、転送には5時間強かかります。これは正常ですか?MySQLサーバーをリンクした経験がありません。

4

1 に答える 1

4

管理スタジオから実行した場合、「SELECT * from MSSQL..Table2」を実行するのにどれくらい時間がかかりますか?

クエリが遅くなる理由は複数あります。

  • 大規模な一括コピーを実行する場合は、トランザクションが完了するまでいつでもロールバックできるように DB を準備する必要があるため、大規模な挿入/更新/削除トランザクションは非常にコストがかかるため、通常はすべてを一度に実行するわけではありません。 . バッチでコピーすることをお勧めします (一度に 1000 レコードなど)。この一括コピーを実行するための優れたツールは、このバッチ処理を実行できる SSIS (SQL Server に付属) です。

  • 特にクラスター化インデックスを持つテーブルにコピーする場合は、コピー元のテーブルで並べ替え順序を明示的に指定する必要があります。クラスター化インデックスのソート順で挿入していることを確認する必要があります (つまり、クラスター化インデックスは通常 int/bigint であるため、レコードが 100、5、27、3 などではなく 1、2、3、4 の順序で挿入されるようにします。 )

于 2011-05-08T23:01:12.177 に答える