1.第一種跨庫查詢,是在同一個mysql伺服器下兩個不同的資料庫之間的聯查,關係如下圖
##在同一個mysql伺服器下,不同的兩個資料直接加上函式庫名就可以實作跨函式庫查詢了select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id
#在[mysqld] 下 添加 federated 然后重启mysql服务就可以了 [mysqld] federated
#输入命令查看引擎开启状态 show engines;
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:代表远程数据库中的哪一张表 **/
select * from t_test1 t1, t_test2 t2 where t1.id = t2.id
federated使用注意事項:1.本地建立的表名必須在遠端伺服器存在,建立的字段也必須是遠端表中的字段,可以比遠端表格的欄位少,但是不能多,本地儲存引擎選擇2.對本機虛擬表的結構修改,並不會修改遠端資料表的結構 3.truncate 指令,會清除遠端表資料 4.drop指令只會刪除虛擬表,並不會刪除遠端表5.select count(*), select * from limit M, N 等語句執行效率非常低,資料量較大時有很嚴重的問題,但是按主鍵或索引列查詢,則很快,如以下查詢就非常慢(假設id 為主索引)
select id from db.tablea where id >100 limit 10 ;
以上是mysql跨庫查詢問題如何解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!