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

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

Barbara Streisand
リリース: 2025-01-13 10:24:44
オリジナル
840 人が閲覧しました

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

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