ホームページ >データベース >mysql チュートリアル >異なるサーバー上のデータベース間でテーブルを結合するにはどうすればよいですか?

異なるサーバー上のデータベース間でテーブルを結合するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-13 09:51:42188ブラウズ

How Can I Join Tables Across Databases on Different Servers?

異なるサーバー データベース間でテーブルを結合する

さまざまなサーバー データベースからのデータを統合すると、包括的なクエリを実行できるようになります。これを行うには、次の戦略を検討できます:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。