ホームページ >データベース >mysql チュートリアル >サーバー リンクと OPENQUERY はどのようにしてデータベース間のクエリを容易にすることができますか?

サーバー リンクと OPENQUERY はどのようにしてデータベース間のクエリを容易にすることができますか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 10:24:44844ブラウズ

How Can Server Links and OPENQUERY Facilitate Cross-Database Queries?

クロスデータベースクエリ: サーバーリンクと OPENQUERY を使用する

さまざまなデータベースのデータにアクセスする方法は数多くありますが、その 1 つはサーバー リンクと OPENQUERY を使用することです。

サーバーリンク

異なるサーバー上のデータベースに接続するには、ストアド プロシージャ sp_addlinkedserver を使用してサーバー リンクを作成します。これにより、リンク サーバー上のテーブルにアクセスし、クエリを実行できるようになります。異なるデータベースのテーブルを結合するには、テーブル名の前にリンク サーバーの名前を追加するだけです。例:

<code class="language-sql">SELECT *
FROM [LinkedServerName].[DatabaseName].[SchemaName].[TableName]</code>

OPENQUERY

また、OPENQUERY を使用すると、サーバーに永続的に接続することなく、リモートで SQL ステートメントを実行し、データを取得できます。構文は次のとおりです:

<code class="language-sql">SELECT *
FROM OPENQUERY([LinkedServerName], 'SELECT * FROM [DatabaseName].[SchemaName].[TableName]')</code>

OPENQUERY は、リモート サーバーがクエリの実行を最適化できるようにすることでパフォーマンスを向上させます。さらに、結果を後続のクエリ用の一時テーブルとしてキャッシュできます。

サーバー リンクと OPENQUERY の使用法を説明するために、異なるサーバー上の異なるデータベースにある 2 つのテーブルを結合するシナリオを考えてみましょう。

サーバーリンク方法:

<code class="language-sql">SELECT *
FROM [Database1].[dbo].[Table1] t1
INNER JOIN [LinkedServerName].[Database2].[dbo].[Table2] t2
ON t1.ID = t2.ID</code>

OPENQUERY メソッド:

<code class="language-sql">-- 从远程数据库获取数据
SELECT *
INTO #TempTable
FROM OPENQUERY([LinkedServerName], 'SELECT * FROM [Database2].[dbo].[Table2]')

-- 将临时表与本地表连接
SELECT *
FROM [Database1].[dbo].[Table1] t1
INNER JOIN #TempTable t2 ON t1.ID = t2.ID</code>

これら 2 つの方法のどちらを選択するかは、データ サイズ、クエリの複雑さ、パフォーマンス要件などの要因によって異なります。

以上がサーバー リンクと OPENQUERY はどのようにしてデータベース間のクエリを容易にすることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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