ホームページ >データベース >mysql チュートリアル >異なるデータベースサーバー間でテーブルを結合するにはどうすればよいですか?
データベースサーバー接続テーブル全体でデータをクエリします
多くの場合、異なるサーバーにある異なるデータベース内のテーブルを結合する必要がある場合があります。これは難しいかもしれませんが、このデータ統合を促進する方法はあります。
方法 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 サイトの他の関連記事を参照してください。