ホームページ  >  記事  >  データベース  >  mysqlでのデータベース間の関連付けクエリメソッドの例

mysqlでのデータベース間の関連付けクエリメソッドの例

小云云
小云云オリジナル
2018-01-17 10:24:354870ブラウズ

この記事では主に MySQL のクロスデータベース関連のクエリ方法を紹介します。必要な方は参考にしていただければ幸いです。

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

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

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

解決策: マシン 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 ファイルの最後に行を追加して 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 で有効にする必要はありません。

関連する推奨事項:

Oracle によるクロスデータベース クエリの実装方法

クロスデータベース トランザクションの一貫性の問題の解決策 (例)

[MSSQL]SQLServer のクロスデータベース クエリ

以上がmysqlでのデータベース間の関連付けクエリメソッドの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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