溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

mysql中怎么實(shí)現(xiàn)跨庫關(guān)聯(lián)查詢

發(fā)布時間:2021-07-26 16:23:37 來源:億速云 閱讀:230 作者:Leah 欄目:數(shù)據(jù)庫

這篇文章將為大家詳細(xì)講解有關(guān)mysql中怎么實(shí)現(xiàn)跨庫關(guān)聯(lián)查詢,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

業(yè)務(wù)場景:關(guān)聯(lián)不同數(shù)據(jù)庫中的表的查詢

比如說,要關(guān)聯(lián)的表是:機(jī)器A上的數(shù)據(jù)庫A中的表A && 機(jī)器B上的數(shù)據(jù)庫B中的表B。

這種情況下,想執(zhí)行“select A.id,B.id from A left join B on ~~~;“那是不可能的,但業(yè)務(wù)需求不可變,數(shù)據(jù)庫設(shè)計不可變,這就蛋疼了。。

解決方案:在機(jī)器A上的數(shù)據(jù)庫A中建一個表B。。。

這當(dāng)然不是跟你開玩笑啦,我們采用的是基于mysql的federated引擎的建表方式。

建表語句示例:CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'

前提條件:你的mysql得支持federated引擎(執(zhí)行show engines;可以看到是否支持)。

mysql中怎么實(shí)現(xiàn)跨庫關(guān)聯(lián)查詢

如果有FEDERATED引擎,但Support是NO,說明你的mysql安裝了這個引擎,但沒啟用,去my.cnf文件末添加一行  federated  ,重啟mysql即可;

如果壓根就沒有FEDERATED這一行,說明你的mysql就沒有安裝這個引擎,這就不能愉快的玩耍了,最好去找你們家運(yùn)維搞定吧,因?yàn)榻酉聛淼膭幼鞅容^大,而且我也不知道怎么搞;

解釋:通過FEDERATED引擎創(chuàng)建的表只是在本地有表定義文件,數(shù)據(jù)文件則存在于遠(yuǎn)程數(shù)據(jù)庫中,通過這個引擎可以實(shí)現(xiàn)類似Oracle
下DBLINK的遠(yuǎn)程數(shù)據(jù)訪問功能。就是說,這種建表方式只會在數(shù)據(jù)庫A中創(chuàng)建一個表B的表結(jié)構(gòu)文件,表的索引、數(shù)據(jù)等文件還是在機(jī)器B上的數(shù)據(jù)庫B中,相當(dāng)于只是在數(shù)據(jù)庫A中創(chuàng)建了表B的一個快捷方式。

關(guān)于mysql中怎么實(shí)現(xiàn)跨庫關(guān)聯(lián)查詢就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI