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

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

DDD
DDDオリジナル
2025-01-13 10:46:46379ブラウズ

How Can I Join Tables Across Different Database Servers?

データベースサーバー接続テーブル全体でデータをクエリします

多くの場合、異なるサーバーにある異なるデータベース内のテーブルを結合する必要がある場合があります。これは難しいかもしれませんが、このデータ統合を促進する方法はあります。

方法 1: サーバー リンクを作成する

sp_addlinkedserver ストアド プロシージャを使用すると、ローカル サーバーとリモート データベース サーバーの間にサーバー リンクと呼ばれる接続を確立できます。リンクが確立されると、リモート サーバーのデータベース名をそのデータベース名の前に追加することで、クエリ内でリモート テーブルを参照できます。

たとえば、MyDatabaseOnDB1 にテーブル MyTable があり、MyDatabaseOnDB2 にテーブル MyOtherTable がある場合、次のクエリを使用してそれらを結合できます:

<code class="language-sql">SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
    INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
        ON tab1.ID = tab2.ID</code>

方法 2: OPENQUERY を使用する

または、OPENQUERY を使用してリモート サーバー上で SQL クエリを実行し、結果を取得することもできます。この方法により、リモート サーバーはクエリを最適化し、パフォーマンスを向上させることができます。これを行うには、ローカル サーバー上に一時テーブルを作成し、OPENQUERY を使用して、リモート サーバー上で実行されたクエリの結果をそのテーブルに設定します。

例:

<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 を使用すると、特にクエリを使用して大規模なデータ セットをフィルタリングする場合に、パフォーマンスが向上し、時間を節約できます。

サーバー リンクを使用するか OPENQUERY を使用するかは、アプリケーションの特定の要件とパフォーマンスの考慮事項によって異なります。どちらのアプローチも、データベース サーバー間でデータをクエリするための実行可能なソリューションを提供し、効率的なデータ統合を促進します。

以上が異なるデータベースサーバー間でテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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