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

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

Susan Sarandon
リリース: 2025-01-13 10:57:43
オリジナル
683 人が閲覧しました

How to Efficiently Join Tables Across Different Database Servers?

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

異なるサーバーにある異なるデータベースの複数のテーブルからデータを取得する場合、これらのテーブルを効率的に結合する方法がいくつかあります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート