Heim  >  Artikel  >  Datenbank  >  So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage

So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage

PHPz
PHPznach vorne
2023-05-27 14:03:282841Durchsuche

1. Die erste Art der datenbankübergreifenden Abfrage ist eine gemeinsame Abfrage zwischen zwei verschiedenen Datenbanken unter demselben MySQL-Server. Die Beziehung ist wie unten dargestellt

So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage

Unter demselben MySQL-Server können zwei verschiedene Daten direkt zum Datenbanknamen hinzugefügt werden, um eine datenbankübergreifende Abfrage zu erreichen SQL-Abfrageergebnisse sind

So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage2. Die zweite Art der datenbankübergreifenden Abfrage ist ein MySQL-Server, der auf zwei verschiedenen Servern (physischen Servern) installiert ist Bei der Implementierung einer datenbankübergreifenden Abfrage ähnelt das Implementierungsprinzip einer virtuellen Zuordnung, die die Verwendung einer anderen Speicher-Engine erfordert. Federated of mysql Die FEDERATED-Speicher-Engine greift auf die Daten in der Tabelle der Remote-Datenbank statt auf die lokale Tabelle zu.

Diese Funktion bietet einigen Entwicklungsanwendungen Komfort. Sie können direkt lokal eine Verbundtabelle erstellen, um eine Verbindung zur Remote-Datentabelle herzustellen. Nach der Konfiguration können die Daten in der lokalen Tabelle direkt mit den Remote-Daten synchronisiert werden Tisch. . Tatsächlich speichert diese Engine keine Daten, die sie benötigt, indem sie eine Verbindung zu anderen MySQL-Servern herstellt.

MySQL aktiviert die Verbundspeicher-Engine standardmäßig nicht und muss in der Konfigurationsdatei aktiviert werden #

select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id
So lösen Sie das Problem der datenbankübergreifenden MySQL-AbfrageSie können sehen, dass sie aktiviert wurde

Dann können Sie eine virtuelle Tabelle in der Datenbank test1 erstellen und die Datenbank test2 auf t_test2 platzieren. Die Tabelle wird der Bibliothek test1 zugeordnet

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

SQL ausführen Anweisung

So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage

Sie können sehen, dass eine t_test2-Tabelle erstellt wurde. Die Tabelle existiert tatsächlich nicht, es handelt sich nur um eine Remote-Zuordnung 🎜🎜## 🎜🎜#Nachdem die Tabelle erstellt wurde, können Sie SQL schreiben.

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

Sie können die Ausführungsergebnisse sehen mit föderiert:

So lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage1 Der lokal erstellte Tabellenname muss auf dem Remote-Server vorhanden sein und die erstellten Felder müssen auch Felder in der Remote-Tabelle sein, die weniger als die Felder der Remote-Tabelle sein können. aber nicht mehr. Die Struktur der lokalen virtuellen Tabelle wird nicht geändert.

3 Der Befehl zum Abschneiden wird gelöscht die Remote-Tabellendaten #🎜 🎜#

4 Der Drop-Befehl löscht nur die virtuelle Tabelle und nicht die Remote-Tabelle

5. Wählen Sie count(*), wählen Sie * aus Limit M, N und andere Anweisungen sind sehr effizient in der Ausführung. Es gibt ernsthafte Probleme, wenn die Datenmenge groß ist, aber die Abfrage nach Primärschlüssel oder Indexspalte ist sehr schnell. Die folgende Abfrage ist beispielsweise sehr langsam (vorausgesetzt, die ID ist die Hauptabfrage). index)

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:代表远程数据库中的哪一张表
**/

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem der datenbankübergreifenden MySQL-Abfrage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen