ホームページ  >  記事  >  データベース  >  MySQLにおけるクロスデータベース関連のクエリのやり方を詳しく解説

MySQLにおけるクロスデータベース関連のクエリのやり方を詳しく解説

黄舟
黄舟オリジナル
2017-05-28 09:40:581827ブラウズ

この記事では、主に mysql のデータベース間の関連付け query メソッドを紹介します。必要な方は、

ビジネス シナリオ: 異なるデータベースのテーブルを関連付けるクエリ

たとえば、関連付けられるテーブルは次のとおりです。マシン A 上のデータベース A 内のテーブル A && マシン B 上のデータベース B 内のテーブル B。

この場合、「select A.id,B.id from A left join B on ~~~;」は実行できませんが、ビジネス要件は不変であり、データベース設計も不変であるため、My ball傷つく。 。

解決策: マシン A 上のデータベース A にテーブル B を作成します。 。 。

もちろんこれは冗談ではなく、MySQL のフェデレーテッド エンジンに基づいたテーブル作成方法を使用しています。

テーブル作成ステートメントの例:

CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

前提条件: mysql はフェデレーテッド エンジンをサポートしている必要があります (show エンジンを実行します。サポートされているかどうかを確認できます)。

FEDERATED エンジンがあってもサポートが NO の場合、mysqlインストールが有効になっていないことを意味します。my.cnf ファイルの末尾に移動して、federated という行を追加します。 、mysql を再起動します

まったく動作しない場合 FEDERATED 行がない場合は、mysql にこのエンジンがインストールされていないことを意味するため、運用とメンテナンスに行くのが最善です。次のアクションは比較的大きいので、それを実行する方法がわかりません

説明: FEDERATED エンジンを通じて作成されたテーブルにはテーブル定義ファイルのみがローカルにあり、データ ファイルはリモートに存在します。このエンジンを通じて、Oracle の DBLINK と同様のリモート データ アクセス機能を実現できます。つまり、このテーブル作成方法では、データベース A にテーブル B のテーブル構造ファイルのみが作成されます。テーブルのインデックス、データ、およびその他のファイルはマシン B 上のデータベース B にまだあります。これは、単に作成するのと同じです。データベース A にあります。テーブル B へのショートカットです。

その結果、卵は痛くなくなりました。 。

注意すべき点がいくつかあります:

1. ローカルテーブルの構造はリモートテーブルの構造とまったく同じである必要があります。

2. リモートデータベースは現在 MySQL に限定されています

3. トランザクションはサポートされていません

他のネットユーザーからの追加コメント:

CREATE TABLE IF NOT EXISTS `logintoken` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` char(1) NOT NULL DEFAULT '0',
`loginName` varchar(20) DEFAULT NULL,
`token` varchar(2000) DEFAULT NULL,
`tokenExpiredTime` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.5.102:3306/zysso/logintoken';

リモート 5.12 のログイントークンテーブルを使用するには、自分で FEDERATED を有効にするだけで済みます。5.12 で有効にする必要はありません

以上がMySQLにおけるクロスデータベース関連のクエリのやり方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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