ホームページ >データベース >mysql チュートリアル >異なるサーバー上のデータベース間でテーブルを結合するにはどうすればよいですか?
異なるサーバー データベース間でテーブルを結合する
さまざまなサーバー データベースからのデータを統合すると、包括的なクエリを実行できるようになります。これを行うには、次の戦略を検討できます:
sp_addlinkedserver を使用する
sp_addlinkedserver
を使用してサーバー リンクを作成し、2 つのデータベース間の接続を確立します。使用方法については、関連ドキュメントを参照してください。リンクが確立されたら、次のようにデータベース名の前にリンク サーバー名を追加して、通常どおりクエリを作成できます。
<code class="language-sql">SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
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>
その他の例については、OPENQUERY
のドキュメントを参照してください。ここで示した例はより単純ですが、sp_addlinkedserver
を使用した最初のアプローチの方が適している可能性があります。ただし、データのフィルタリングが必要な場合は、OPENQUERY
を使用するとパフォーマンスが向上します。
以上が異なるサーバー上のデータベース間でテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。