Maison  >  Article  >  base de données  >  Comment résoudre le problème de requête entre bases de données MySQL

Comment résoudre le problème de requête entre bases de données MySQL

PHPz
PHPzavant
2023-05-27 14:03:282912parcourir

1. Le premier type de requête inter-bases de données est une requête conjointe entre deux bases de données différentes sous le même serveur MySQL. La relation est la suivante

Comment résoudre le problème de requête entre bases de données MySQL

.

Sous le même serveur MySQL, deux données différentes peuvent être directement ajoutées au nom de la base de données pour réaliser une requête inter-bases de données

select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id

Comment résoudre le problème de requête entre bases de données MySQL

Exécution Le Les résultats de la requête SQL sont

Comment résoudre le problème de requête entre bases de données MySQL

2. Le deuxième type de requête inter-bases de données est un serveur MySQL installé sur deux serveurs différents (serveurs physiques). implémente une requête inter-bases de données, son principe d'implémentation est similaire à un mappage virtuel, qui nécessite l'utilisation d'un autre moteur de stockage fédéré de mysql. Le moteur de stockage FEDERATED accède aux données de la table de la base de données distante au lieu de la table locale.

Cette fonctionnalité apporte de la commodité à certaines applications de développement. Vous pouvez directement créer une table fédérée localement pour vous connecter à la table de données distante. Après la configuration, les données de la table locale peuvent être directement synchronisées avec les données distantes. tableau. . En fait, ce moteur ne stocke pas réellement de données. Les données dont il a besoin sont obtenues en se connectant à d'autres serveurs MySQL.

mysql n'active pas le moteur de stockage fédéré par défaut et doit être activé dans le fichier de configuration #

#在[mysqld] 下 添加 federated 然后重启mysql服务就可以了
[mysqld]
federated

Vous pouvez voir qu'il a été activé

 ;

Comment résoudre le problème de requête entre bases de données MySQL

Ensuite, vous pouvez créer une table virtuelle sur la base de données test1 et placer la base de données test2 sur t_test2 La table est mappée sur la bibliothèque test1

#输入命令查看引擎开启状态
show engines;

Execute sql déclaration

Comment résoudre le problème de requête entre bases de données MySQL

Vous pouvez voir qu'une table t_test2 est créée, cette table n'existe en fait pas, c'est juste un mappage à distance 🎜🎜##. 🎜🎜#Une fois la table créée, vous pouvez écrire sql

CREATE TABLE `t_test2` (
  `id` int NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb3 COMMENT='远程测试表t_test2' CONNECTION='mysql://root:123456@127.0.0.1:3306/test2/t_test2' ;
/**

CONNECTION='mysql://root:123456$@127.0.0.1:3306/test2/t_test2' 这个配置是关键
root:代表远程数据库的用户
123456:代表远程数据的密码
127.0.0.1:代表远程数据库的ip地址,域名也可以
test2:代表远程数据库的数据库名称
t_test2:代表远程数据库中的哪一张表
**/

Vous pouvez voir les résultats de l'exécution

Comment résoudre le problème de requête entre bases de données MySQL

Notes sur en utilisant fédéré :

Comment résoudre le problème de requête entre bases de données MySQL1. Le nom de la table créée localement doit exister sur le serveur distant, et les champs créés doivent également être des champs de la table distante, qui peuvent être inférieurs aux champs de la table distante, mais pas plus. Sélection du moteur de stockage local

2 La modification de la structure de la table virtuelle locale ne modifiera pas la structure de la table distante

3. les données de la table distante #🎜 🎜#Comment résoudre le problème de requête entre bases de données MySQL4. La commande drop supprimera uniquement la table virtuelle et non la table distante

5. N et d'autres instructions sont très efficaces dans l'exécution. Faible, il y a de sérieux problèmes lorsque la quantité de données est importante, mais l'interrogation par clé primaire ou par colonne d'index est très rapide. Par exemple, la requête suivante est très lente (en supposant que l'identifiant soit le principal). index)

select * from t_test1 t1, t_test2 t2 where t1.id = t2.id

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer