異なるサーバー データベース間でテーブルを結合する
異なるサーバーにある異なるデータベースの複数のテーブルからデータを取得する場合、これらのテーブルを効率的に結合する方法がいくつかあります。
1. サーバーリンクを使用します
sp_addlinkedserver
コマンドを使用してサーバー リンクを作成し、データベース間の接続を確立します。例に示すように、リンク サーバー名の前にデータベース名を付けて、通常どおりクエリ経由でアクセスします:
<code class="language-sql">-- 来自 DB1 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
2. OPENQUERY を使用します
または、OPENQUERY
を使用してリモート SQL ステートメントを実行し、他のサーバーからデータを取得することを検討してください。この方法では、リモート サーバー上の帯域幅が最適化され、クエリが最適化されます。次の例に示すように、後で接続するためにデータを一時テーブルまたはメモリ内のテーブルにキャッシュできます。
<code class="language-sql">-- 从其他数据库服务器获取数据 SELECT * INTO #myTempTable FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]') -- 现在我可以连接我的临时表以查看数据 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>
メモ
Server Link と のどちらを選択するかは、特定の使用例とパフォーマンス要件によって異なります。サーバー リンクは永続的な接続を提供しますが、OPENQUERY
は一時的なデータの取得を可能にします。フィルタリングが必要なシナリオでは、OPENQUERY
の方が効率的である可能性があります。その他の例やシナリオについては、ドキュメントを参照してください。 OPENQUERY
以上が異なるデータベースサーバー間でテーブルを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。