您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL怎么實現跨庫join查詢的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL怎么實現跨庫join查詢文章都會有所收獲,下面我們一起來看看吧。
只需要在表名前加上db_name
select * from userdb.user u join orderdb.`order` o on u.id = o.user_id;
1.查看配置 FEDERATED
SHOW engines;
如果是NO,需要改為YES.默認是NO
在my.ini文件中增加一行,重啟MySQL 服務即可
federated
2.在本地庫創建相同的表建立連接
CREATE TABLE `order` ( `id` bigint NOT NULL AUTO_INCREMENT, `user_id` bigint NOT NULL, `product_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE =FEDERATED CONNECTION='mysql://root:123456@192.168.10.100:3306/orderdb/order';
注意:本地創建的表名必須在遠程服務器存在,創建的字段也必須是遠程表中的字段,可以比遠程表的字段少,但是不能多,本地存儲引擎選擇:ENGINE =FEDERATED,
CONNECTION選項中的連接字符串的一般形式如下:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
配置密碼作為純文本的話會存在安全問題,運行show create table,show table status是可以見的
note:
本地表結構必須與遠程完全一樣
遠程數據庫只能連接MySql;
不支持事務;
不支持表結構的修改
本地表更新,遠程表也同步更新,反之亦然
刪除本地表,遠程表不會刪除
最好不要出現跨庫join,應該在設計的時候就避免。
將需要join的表放在同一數據庫,即便是分庫分表看能不能按相同維度分到一起。
或者看能不能設冗余字段,避免關聯查詢。
那如果無法避免跨庫join,也應該走微服務API查詢,或者使用中間件實現。
比如:
1.調用兩個服務API分別查詢,再組裝數據;
2.利用Canal,將數據同步到業務系統數據庫;
3.將兩個服務的數據實時同步到一個只讀庫,然后在只讀庫查詢;
一定要跨庫join,MySQL也是可以支持的:
1.開啟FEDERATED引擎,修改my.ini(或my.cnf)文件新添加一行,內容為federated,然后重啟MySQL。
2.在數據庫中建立遠程表,通過參數CONNECTION='mysql://username:pwd@ip:端口/庫名/表名
3.直接在SQL語句使用join即可。
關于“MySQL怎么實現跨庫join查詢”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL怎么實現跨庫join查詢”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。