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
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
2. 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
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
#输入命令查看引擎开启状态 show engines;
1 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!