mysql为何不建议使用外键
CSDN首頁(yè)
博客
課程
文庫(kù)·商城
問(wèn)答
社區(qū)
插件
認(rèn)證
開(kāi)源
mysql為何不建議使用外鍵
搜索
會(huì)員中心
足跡
動(dòng)態(tài)
消息
創(chuàng)作
mysql為何不建議使用外鍵_為什么很多mysql課程不推薦用物理外鍵?
大機(jī)靈聰明絕頂
于 2021-01-18 21:21:46 發(fā)布
1408
收藏
文章標(biāo)簽: mysql為何不建議使用外鍵
版權(quán)
剛好今晚有師弟問(wèn)我這個(gè)問(wèn)題,就來(lái)搜搜。以前我對(duì)這個(gè)也是蠻困惑的。這一年來(lái)對(duì)這個(gè)問(wèn)題感受比較深。
用外鍵的好處我就不多說(shuō)了,既然是關(guān)系型數(shù)據(jù)庫(kù),外鍵的約束為我們保證了數(shù)據(jù)主從關(guān)系和產(chǎn)生的先后關(guān)系,級(jí)聯(lián)操作為我們的update和delete帶來(lái)了不少方便。但成本是有的,你要權(quán)衡你是不是想付出這些代價(jià)。成本參考以下幾點(diǎn):
1.外鍵的性能問(wèn)題
我剛寫(xiě)了一些,然后發(fā)現(xiàn)有人寫(xiě)的更好而且簡(jiǎn)潔,就引用吧:@mysqlops為何說(shuō)外鍵有性能問(wèn)題:
1.數(shù)據(jù)庫(kù)需要維護(hù)外鍵的內(nèi)部管理;
2.外鍵等于把數(shù)據(jù)的一致性事務(wù)實(shí)現(xiàn),全部交給數(shù)據(jù)庫(kù)服務(wù)器完成;
3.有了外鍵,當(dāng)做一些涉及外鍵字段的增,刪,更新操作之后,需要觸發(fā)相關(guān)操作去檢查,而不得不消耗資源;
4.外鍵還會(huì)因?yàn)樾枰?qǐng)求對(duì)其他表內(nèi)部加鎖而容易出現(xiàn)死鎖情況;
作者:mysqlops
鏈接:https://www.zhihu.com/question/19600081/answer/13295957
來(lái)源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
總的來(lái)說(shuō)物理外鍵是個(gè)比較“重”的實(shí)現(xiàn),他會(huì)不顧性能不分輕重緩急的給你保證一致性。
2.mysql的外鍵設(shè)計(jì)問(wèn)題
雖然很多人都不推薦你在關(guān)系型數(shù)據(jù)庫(kù)使用外鍵。 但你更多聽(tīng)到的是mysql的,而不是SQLserver或者其他。比較公認(rèn)的是,他的外鍵設(shè)計(jì)得的確不是很好,限制多功能不強(qiáng)大等,以innodb 為例子,包含但不限于以下幾點(diǎn)(我認(rèn)為比較嚴(yán)重的)所有tables必須是InnoDB型,它們不能是臨時(shí)表。
在引用表中,必須有一個(gè)索引,外鍵列以同樣的順序被列在其中作為第一列。這樣一個(gè)索引如果不存在,它必須在引用表里被自動(dòng)創(chuàng)建。
不支持對(duì)外鍵列的索引前綴。這樣的后果之一是BLOB和TEXT列不被包括在一個(gè)外鍵中,這是因?yàn)閷?duì)這些列的索引必須總是包含一個(gè)前綴長(zhǎng)度
InnoDB不對(duì)那些外鍵或包含NULL列的被引用鍵值檢查外鍵約束
印象中輪子哥 @vczh 在回答一個(gè)跟存儲(chǔ)過(guò)程有關(guān)的問(wèn)題提到過(guò),其他數(shù)據(jù)庫(kù)不建議使用存儲(chǔ)過(guò)程那是因?yàn)樗麄冊(cè)O(shè)計(jì)的不好,銀行內(nèi)不都比較推薦甚至要求sqlserver使用存儲(chǔ)過(guò)程么(你沒(méi)騙我吧)。反正我以前也是用sqlserver的,我覺(jué)得是挺好的。
3.外鍵對(duì)拓展性的限制和影響
外鍵的主從關(guān)系是定的,然后你會(huì)遵守這個(gè)規(guī)矩去干活。但是計(jì)劃趕不上變化,萬(wàn)一哪天主鍵所在表需要拆分了呢?需要重構(gòu)了呢?萬(wàn)一哪天你突然發(fā)現(xiàn)外鍵表不是非得跟主表的主鍵掛上關(guān)系呢?就我經(jīng)歷過(guò)的來(lái)看,這種情況并不少見(jiàn),尤其是數(shù)據(jù)庫(kù)設(shè)計(jì)者水平不夠高的情況下。
另一方面,數(shù)據(jù)庫(kù)幫你保證級(jí)聯(lián)關(guān)系,你平時(shí)寫(xiě)程序的時(shí)候就真的思路清晰嗎?因?yàn)槟承┰?比如你想要的關(guān)系數(shù)據(jù)庫(kù)不支持,mysql經(jīng)常),有些地方你就不能設(shè)計(jì)外鍵了,當(dāng)有級(jí)聯(lián)更新的需要時(shí),一部分靠物理外鍵,一部分還得靠自己,我覺(jué)得還不如全靠代碼邏輯去保證。即使你對(duì)業(yè)務(wù)理解深刻,對(duì)外鍵也掌握的透徹,你也不太希望老是你管一部分他管一部分吧?
再放個(gè)大招,當(dāng)你需要分庫(kù)分表的時(shí)候,外鍵就浮云了。
4.邏輯外鍵在業(yè)界比較成熟
外鍵是個(gè)好東西,不使用物理外鍵,我們也可以約定邏輯外鍵(不在數(shù)據(jù)庫(kù)聲明FK,在程序?qū)崿F(xiàn)上表達(dá)關(guān)聯(lián))
數(shù)據(jù)庫(kù)上的策略:可以選擇大多數(shù)情況下我們只更新不刪除,也就是邏輯刪,不再使用的歷史數(shù)據(jù)定期歸檔來(lái)減少壓力。
代碼的設(shè)計(jì)和限制:對(duì)表范圍的操作權(quán)限,開(kāi)啟事務(wù)去處理邏輯,有需要進(jìn)行異步操作來(lái)提高性能的我們?cè)O(shè)計(jì)補(bǔ)償機(jī)制去彌補(bǔ),等等。
有人問(wèn)原本在物理外鍵的開(kāi)銷(xiāo),在程序上不也有開(kāi)銷(xiāo)嗎。但是這樣我們對(duì)優(yōu)化性能的方式也靈活了,剛剛說(shuō)的異步處理就是一種。視具體情況而定,如果設(shè)計(jì)的好,有時(shí)候某些“臟數(shù)據(jù)”你不是非得立刻刪除他,甚至不是非得刪除他。對(duì)于正確性>性能的說(shuō)法,如果邏輯復(fù)雜到一定程度,物理外鍵一定能給你提供正確性嗎?這個(gè)可以討論討論。
最后,
來(lái)多點(diǎn)傳送門(mén),因?yàn)槔嫌X(jué)得想探討一個(gè)問(wèn)題在一個(gè)帖子里能看到的太窄了。大家設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)使用外鍵嗎??www.zhihu.comzhihu-card-default.svg數(shù)據(jù)庫(kù)刪除記錄,是直接物理刪除好,還是偽刪除好??www.zhihu.comzhihu-card-default.svg在數(shù)據(jù)庫(kù)中具體創(chuàng)建表結(jié)構(gòu)的時(shí)候,需要?jiǎng)?chuàng)建外鍵嗎??www.zhihu.comzhihu-card-default.svgSQL Server 和 Oracle 以及 MySQL 有哪些區(qū)別??www.zhihu.comzhihu-card-default.svg
其他的知乎上好像還有好幾個(gè)類(lèi)似問(wèn)題,不過(guò)沒(méi)什么人答,大家怎么老是問(wèn)人家問(wèn)過(guò)的啊。。。
最后是我把這個(gè)整理成了帖子
相關(guān)資源:MySQL刪除表的時(shí)候忽略外鍵約束的簡(jiǎn)單實(shí)現(xiàn)_mysql如何取消外鍵約束…
大機(jī)靈聰明絕頂
關(guān)注
2
0
0
打賞
數(shù)據(jù)庫(kù)外鍵為什么被拋棄了?
軟件老王
182
1、背景 其實(shí)這個(gè)話題是老生常談,很多人在工作中確實(shí)也不會(huì)使用外鍵。包括在阿里的JAVA規(guī)范中也有下面這一條: 【強(qiáng)制】不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決。 但是呢,詢問(wèn)他們?cè)?#xff0c;大多是這么回答的: 每次做DELETE 或者UPDATE都必須考慮外鍵約束,會(huì)導(dǎo)致開(kāi)發(fā)的時(shí)候很痛苦,測(cè)試數(shù)據(jù)極為不方便。 坦白說(shuō),這么說(shuō)也是對(duì)的。但是呢,不夠全面,所以開(kāi)一文來(lái)詳細(xì)說(shuō)明。 2、正文 首先我們明確一點(diǎn),外鍵約束是一種約束,這個(gè)約束的存在,會(huì)保證表間數(shù)據(jù)的關(guān)系“始終完整”。因此,外鍵約束的存在,并非全
參與評(píng)論
請(qǐng)發(fā)表有價(jià)值的評(píng)論, 博客評(píng)論不歡迎灌水,良好的社區(qū)氛圍需大家一起維護(hù)。
表情包
表情包
MySQL - 不使用外鍵約束的實(shí)操(二)_程序員牧碼的博客
3-21
MySQL - 不使用外鍵約束的實(shí)操(二) 互聯(lián)網(wǎng)開(kāi)發(fā)中不用外鍵到底是個(gè)什么意思? 都說(shuō)互聯(lián)網(wǎng)開(kāi)發(fā)盡量不用外鍵,那么這里的不用外鍵到底代表的啥意思呢? 1. 這里有一層意思很明確: 不用外鍵約束。比如刪除一張表中的數(shù)據(jù)時(shí),如果要級(jí)聯(lián)…
MySQL 不用外鍵的話,如何讓表起來(lái)關(guān)聯(lián)呢?_weixin_34006…
4-2
MySQL 不用外鍵的話,如何讓表起來(lái)關(guān)聯(lián)呢? 2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>> 最近在設(shè)計(jì)一個(gè)戶外APP的數(shù)據(jù)庫(kù),在外鍵設(shè)計(jì)上有點(diǎn)糾結(jié),用還是不用,考慮了再三,還是不用, 那么如何表之間的關(guān)聯(lián)了。只能在字段名上做文章了。
MySQL——不使用物理外鍵的原因
Lutra的博客
223
1、性能 使用物理外鍵會(huì)使得數(shù)據(jù)庫(kù)性能下降,并發(fā)能力下降 2、熱更新 分布式的項(xiàng)目,絕大多數(shù)都需要熱更新的,熱更新就是不停機(jī)去進(jìn)行維護(hù)。不管是互聯(lián)網(wǎng)產(chǎn)品,還是一些游戲手游。大多都會(huì)采用熱更新的方式。如果數(shù)據(jù)庫(kù)有外鍵,可能會(huì)造成新更新的代碼 無(wú)法運(yùn)行。 因?yàn)橐ヅ洮F(xiàn)有的外鍵,可能要重啟服務(wù)器。那么這樣就達(dá)不到熱更新的目的了。因?yàn)橥怄I是強(qiáng)力執(zhí)行的。注意點(diǎn)和分布式絕對(duì)是沖突的。 3、耦合度 去…
mysql為啥不能用外鍵_為什么在MySQL數(shù)據(jù)庫(kù)中無(wú)法創(chuàng)建外鍵
weixin_29016315的博客
186
展開(kāi)全部一般情況下32313133353236313431303231363533e78988e69d8331333361326338,mysql是不贊成用外鍵的,因?yàn)檫@個(gè)完全可以用php等服務(wù)器腳本語(yǔ)言組織一些功能達(dá)到目的…如果 你一定要用,例子,簡(jiǎn)單演示一下使用,做dage和xiaodi兩個(gè)表,大哥表是主鍵,小弟表是外鍵:建表1CREATETABLEdage(2id…
mysql為何不建議使用外鍵_MYSQL外鍵的使用以及優(yōu)缺點(diǎn)…
3-13
2,用外鍵要適當(dāng),不能過(guò)分追求 3,不用外鍵而用程序控制數(shù)據(jù)一致性和完整性時(shí),應(yīng)該寫(xiě)一層來(lái)保證,然后個(gè)個(gè)應(yīng)用通過(guò)這個(gè)層來(lái)訪問(wèn)數(shù)據(jù)庫(kù)。 需要注意的是:MySQL允許使用外鍵,但是為了完整性檢驗(yàn)的目的,在除了InnoDB表類(lèi)型之外的所有表類(lèi)型中…
mysql是否需要設(shè)置外鍵_數(shù)據(jù)庫(kù)到底需不需要設(shè)置外鍵?_m…
3-11
(1)所有外鍵的約束,需要自己在邏輯層自己實(shí)現(xiàn); (2)會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤覆寫(xiě),錯(cuò)誤數(shù)據(jù)進(jìn)庫(kù)的情況; (3)消耗了服務(wù)器的性能; (4)業(yè)務(wù)層里夾帶持久層特性,耦合; 總結(jié): 1.互聯(lián)網(wǎng)行業(yè):不推薦使用外鍵。
mysql sql外鍵的作用_為什么實(shí)際開(kāi)發(fā)中不使用外鍵
weixin_39621178的博客
555
背景上學(xué)的時(shí)候,大家肯定都學(xué)習(xí)了數(shù)據(jù)庫(kù)相關(guān)的課程,MySQL和Oracle中都有外鍵。但是自從開(kāi)始工作,我就發(fā)現(xiàn)一個(gè)奇怪的問(wèn)題,企業(yè)實(shí)際開(kāi)發(fā)中,表結(jié)構(gòu)定義都不會(huì)用數(shù)據(jù)庫(kù)的外鍵,當(dāng)需要用外鍵做關(guān)聯(lián)的時(shí)候,也是僅對(duì)字段進(jìn)行冗余存儲(chǔ),不會(huì)用foreign key的定義,究竟有哪些考量呢?此篇做個(gè)總結(jié)。外鍵什么是外鍵兩張表有關(guān)聯(lián)關(guān)系,才會(huì)涉及外鍵的概念。舉例 商品表(商品id、商品名稱(chēng)),訂單表(訂單id…
mysql數(shù)據(jù)庫(kù) 外鍵設(shè)計(jì)的優(yōu)缺點(diǎn) - 個(gè)人見(jiàn)解
ailice001的博客
7551
mysql設(shè)置外鍵的好處阻止執(zhí)行 從表插入新行,其外鍵值不是主表的主鍵值便阻止插入; 從表修改外鍵值,新值不是主表的主鍵值便阻止修改; 主表刪除行,其主鍵值在從表里存在便阻止刪除(要想刪除,必須先刪除從表的相關(guān)行); 主表修改主鍵值,舊值在從表里存在便阻止修改(要想修改,必須先刪除從表的相關(guān)行)。級(jí)聯(lián)執(zhí)行 主表刪除行,連帶從表的相關(guān)行一起刪除; 主表修改主鍵值,…
MySQL中盡量少使用外鍵的原因_abigpineapple的博客
3-21
MySQL中盡量少使用外鍵的原因 mysql設(shè)置外鍵的好處 阻止執(zhí)行 從表插入新行,其外鍵值不是主表的主鍵值便阻止插入; 從表修改外鍵值,新值不是主表的主鍵值便阻止修改; 主表刪除行,其主鍵值在從表里存在便阻止刪除(要想刪除,必須先…
mysql建表時(shí)外檢怎么創(chuàng)建_MySQL創(chuàng)建表時(shí)加入的約束以及外鍵約束的的意義
weixin_42452580的博客
140
1,創(chuàng)建表時(shí)加入的約束a)非空約束,not nullb)唯一約束,uniquec)主鍵約束,primary keyd)外鍵約束,foreign key1,非空約束,針對(duì)某個(gè)字段設(shè)置其值不為空,如:學(xué)生的姓名不能為空drop table if existst_student;create tablet_student(student_idint(10),student_namevarchar…
mysql是否推薦使用外鍵_MySQL 外鍵使用
weixin_30135925的博客
318
MySQL 外鍵使用外鍵的使用條件:1.兩個(gè)表必須是InnoDB表,MyISAM表暫時(shí)不支持外鍵(據(jù)說(shuō)以后的版本有可能支持,但至少目前不支持);2.外鍵列必須建立了索引,MySQL 4.1.2以后的版本在建立外鍵時(shí)會(huì)自動(dòng)創(chuàng)建索引,但如果在較早的版本則需要顯示建立;3.外鍵關(guān)系的兩個(gè)表的列必須是數(shù)據(jù)類(lèi)型相似,也就是可以相互轉(zhuǎn)換類(lèi)型的列,比如int和tinyint可以,而int和char則不可以;外鍵…
【數(shù)據(jù)庫(kù)外鍵】為什么不推薦使用物理外鍵?
corleone_4ever的博客
573
目錄 一、外鍵使用場(chǎng)景 二、為什么不使用物理外鍵 1.參考阿里手冊(cè) 2.物理外鍵的優(yōu)點(diǎn) 3.物理外鍵的缺點(diǎn) 三、總結(jié) 一、外鍵使用場(chǎng)景 今天測(cè)試員測(cè)出來(lái)許多bug,是由于未解決外鍵關(guān)系照常的我問(wèn)題. A表的id是B表的外鍵,業(yè)務(wù)上B表通過(guò)外鍵關(guān)聯(lián)A表獲取A表的name A表刪除后,B表無(wú)法獲取到name 通過(guò)加邏輯外鍵來(lái)解決了這個(gè)問(wèn)題 二、為什么不使用物理外鍵 1.參考阿里手冊(cè) 2.物理外鍵的優(yōu)點(diǎn) 保證數(shù)據(jù)的完整性和一致性 級(jí)聯(lián)操作方便 將數(shù)據(jù)完整性判斷托付給…
【原創(chuàng)】數(shù)據(jù)庫(kù)中為什么不推薦使用外鍵約束
weixin_30312659的博客
2131
引言 其實(shí)這個(gè)話題是老生常談,很多人在工作中確實(shí)也不會(huì)使用外鍵。包括在阿里的JAVA規(guī)范中也有下面這一條 【強(qiáng)制】不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決。 但是呢,詢問(wèn)他們?cè)?#xff0c;大多是這么回答的 每次做DELETE 或者UPDATE都必須考慮外鍵約束,會(huì)導(dǎo)致開(kāi)發(fā)的時(shí)候很痛苦,測(cè)試數(shù)據(jù)極為不方便。 坦白說(shuō),這么說(shuō)也是對(duì)的。但是呢,不夠全面,所以開(kāi)一文來(lái)詳細(xì)說(shuō)明。 正文 首先我們明…
MySQL - 不使用外鍵約束的實(shí)操(二)
牧碼的博客
807
互聯(lián)網(wǎng)開(kāi)發(fā)中不用外鍵到底是個(gè)什么意思? 都說(shuō)互聯(lián)網(wǎng)開(kāi)發(fā)盡量不用外鍵,那么這里的不用外鍵到底代表的啥意思呢? 1. 這里有一層意思很明確: 不用外鍵約束。比如刪除一張表中的數(shù)據(jù)時(shí),如果要級(jí)聯(lián)刪除另一張表中關(guān)聯(lián)的數(shù)據(jù),以往是由數(shù)據(jù)庫(kù)來(lái)級(jí)聯(lián)約束的,現(xiàn)在應(yīng)該將其移到程序中由程序來(lái)保持?jǐn)?shù)據(jù)的一致性。 2. 另外一層意思: 外鍵的定義就是在一個(gè)表中的字段是另外一張表中的主鍵。如果僅按照"不使用外…
mysql 邏輯外鍵的設(shè)置
qq_16069927的博客
3638
本博客轉(zhuǎn)載自 https://www.jianshu.com/p/ab58fa7e8146 本博客字體標(biāo)紅部分為設(shè)置外鍵的SQL語(yǔ)句 1.假如我們現(xiàn)在有個(gè)這樣的需求,我們公司有以下幾個(gè)部門(mén),“研發(fā)部”,“產(chǎn)品部”,“運(yùn)維部”,當(dāng)有新員工進(jìn)入的時(shí)候,需要只能加入以下三個(gè)部門(mén)的某個(gè)部門(mén),沒(méi)有列表所示的部門(mén)將不能加入,這個(gè)時(shí)候,我們可以用到外鍵 我們來(lái)創(chuàng)建兩個(gè)表,create table …
MYSQL外鍵的使用以及優(yōu)缺點(diǎn)
u010695055的專(zhuān)欄
9102
主鍵和索引是不可少的,不僅可以優(yōu)化數(shù)據(jù)檢索速度,開(kāi)發(fā)人員還省不其它的工作, 矛盾焦點(diǎn):數(shù)據(jù)庫(kù)設(shè)計(jì)是否需要外鍵。這里有兩個(gè)問(wèn)題:一個(gè)是如何保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性和一致性;二是第一條對(duì)性能的影響。 正方觀點(diǎn): 1,由數(shù)據(jù)庫(kù)自身保證數(shù)據(jù)一致性,完整性,更可靠,因?yàn)槌绦蚝茈y100%保證數(shù)據(jù)的完整性,而用外鍵即使在數(shù)據(jù)庫(kù)服務(wù)器當(dāng)機(jī)或者出現(xiàn)其他問(wèn)題的時(shí)候,也能夠最大限度的保證數(shù)據(jù)的一致性和完整性
mysql一對(duì)多究竟用還是不用外鍵_不使用外鍵,嘗試多對(duì)多查詢
weixin_31597759的博客
835
我的上兩篇博客總結(jié)了一下不使用外鍵的優(yōu)缺點(diǎn)但是我還沒(méi)試過(guò),今天嘗試了一下,用難一點(diǎn)的多對(duì)多關(guān)系實(shí)驗(yàn)一:工具:springbootmybatismysql二:材料:五張表:user–用戶表role–角色表permission–權(quán)限表user-role表permission-role表其中,user-role表和permission-role表是意義上的中間表,就是沒(méi)有外鍵的,其他三張是基本表s…
mysql外鍵約束 弊端_記一個(gè)Mysql外鍵約束設(shè)計(jì)缺陷
weixin_35932973的博客
291
記一個(gè)Mysql外鍵約束設(shè)計(jì)缺陷背景信息最近在做項(xiàng)目的數(shù)據(jù)庫(kù)遷移,從Oracle到Mysql,一個(gè)外鍵約束在Oracle運(yùn)行正常,在mysql報(bào)異常。(因?yàn)椴沤邮譀](méi)幾天,對(duì)業(yè)務(wù)和框架不熟,在處理問(wèn)題時(shí)花了很多時(shí)間。)[2018-08-01 13:34:19] [23000][1452] Cannot add or update a child row: a foreign key constrai…
mysql 外鍵性能_關(guān)于,在Mysql中,外鍵是否會(huì)影響性能的問(wèn)題???
weixin_33729662的博客
670
In MySQL, a foreign key requires an index. If an index already exists, the foreign key will use that index (even using the prefix of an existing multi-column index). If no index exists, defining the f…
MySQL之為什么不建議使用外鍵約束
最新發(fā)布
u800820的專(zhuān)欄
132
接上篇短文中提到我們項(xiàng)目中不會(huì)設(shè)置外鍵,這里簡(jiǎn)單談下原因。 外鍵的優(yōu)點(diǎn) 外鍵能夠保證數(shù)據(jù)的一致性和完整性,通過(guò)設(shè)置外鍵,數(shù)據(jù)庫(kù)就會(huì)判斷數(shù)據(jù)的完整性,不需要在應(yīng)用代碼里實(shí)現(xiàn)。 外鍵的缺點(diǎn) 性能問(wèn)題 比如table_a和table_b通過(guò)外鍵關(guān)聯(lián),當(dāng)往table_a插入數(shù)據(jù)時(shí),數(shù)據(jù)庫(kù)就會(huì)去查詢外鍵關(guān)聯(lián)的table_b里面有沒(méi)有對(duì)應(yīng)數(shù)據(jù),沒(méi)有對(duì)應(yīng)數(shù)據(jù)是沒(méi)法入庫(kù)成功的。同時(shí),在大數(shù)據(jù)量入庫(kù)的情況下,每次入庫(kù)都需要先查詢會(huì)導(dǎo)致性能瓶頸。 因此,阿里巴巴Java開(kāi)發(fā)手冊(cè)里建議,不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)
MySQL數(shù)據(jù)庫(kù)為什么不推薦使用外鍵約束?
qq_44829938的博客
311
阿里巴巴的Java開(kāi)發(fā)手冊(cè)中有這樣一句話: 不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決! 以student和grade的關(guān)系為例 ,student中的student_id是主鍵,成績(jī)表中的student_id則為外鍵 ! 先了解一下什么叫級(jí)聯(lián)更新和級(jí)聯(lián)刪除! 當(dāng)在student表中要?jiǎng)h除或者更新student_id=20的相關(guān)信息,馬上在grade表中中查找是否有student_id=20這個(gè)記錄,然后進(jìn)行刪除或更新,這就叫級(jí)聯(lián)。 外…
mysql 外鍵_為什么大多數(shù)互聯(lián)網(wǎng)公司不用外鍵約束
weixin_39645343的博客
139
是否使用外鍵約束【強(qiáng)制】不得使用外鍵與級(jí)聯(lián),一切外鍵概念必須在應(yīng)用層解決.-《阿里Java規(guī)范》首先外鍵(Foreign Key)是什么東西使用方案假設(shè)有一個(gè)score表 id是自增id,score是分?jǐn)?shù),student_id是學(xué)號(hào)。另一個(gè)student表,id是自增id,name是名字,student_id是學(xué)號(hào)。那么設(shè)計(jì)這個(gè)的時(shí)候就希望有一個(gè)關(guān)聯(lián)關(guān)系,讓score的student_id指向st…
“相關(guān)推薦”對(duì)你有幫助么?
非常沒(méi)幫助
沒(méi)幫助
一般
有幫助
非常有幫助
??2022 CSDN 皮膚主題:深藍(lán)海洋 設(shè)計(jì)師:CSDN官方博客 返回首頁(yè)
關(guān)于我們
招賢納士
商務(wù)合作
尋求報(bào)道
400-660-0108
kefu@csdn.net
在線客服
工作時(shí)間 8:30-22:00
公安備案號(hào)11010502030143
京ICP備19004658號(hào)
京網(wǎng)文〔2020〕1039-165號(hào)
經(jīng)營(yíng)性網(wǎng)站備案信息
北京互聯(lián)網(wǎng)違法和不良信息舉報(bào)中心
家長(zhǎng)監(jiān)護(hù)
網(wǎng)絡(luò)110報(bào)警服務(wù)
中國(guó)互聯(lián)網(wǎng)舉報(bào)中心
Chrome商店下載
?1999-2022北京創(chuàng)新樂(lè)知網(wǎng)絡(luò)技術(shù)有限公司
版權(quán)與免責(zé)聲明
版權(quán)申訴
出版物許可證
營(yíng)業(yè)執(zhí)照
大機(jī)靈聰明絕頂
碼齡3年
暫無(wú)認(rèn)證
82
原創(chuàng)
周排名
90萬(wàn)+
總排名
4萬(wàn)+
訪問(wèn)
等級(jí)
58
積分
5
粉絲
6
獲贊
0
評(píng)論
30
收藏
勤寫(xiě)標(biāo)兵Lv2
私信
關(guān)注
搜博主文章
熱門(mén)文章
arcgis里面怎么截圖_怎么利用ARCGIS裁剪圖像 4303
內(nèi)存顆粒位寬和容量_最全的內(nèi)存顆粒編碼規(guī)則說(shuō)明,教你看穿內(nèi)存條到底用的什么顆粒… 2391
msconfig藍(lán)屏_電腦msconfig改動(dòng)后藍(lán)屏怎么修復(fù) 2309
onlyoffice開(kāi)發(fā)java_OnlyOffice功能及演示 2173
普通話測(cè)試第四題評(píng)分標(biāo)準(zhǔn)_普通話機(jī)測(cè)培訓(xùn)切中考生痛點(diǎn)(四)說(shuō)話題評(píng)分標(biāo)準(zhǔn)及注意事項(xiàng)… 1925
您愿意向朋友推薦“博客詳情頁(yè)”嗎?
強(qiáng)烈不推薦
不推薦
一般般
推薦
強(qiáng)烈推薦
最新文章
jquery ajax safari,jquery - Safari browser ajax request error - Stack Overflow
讀取db服務(wù)器信息出錯(cuò),嘗試讀取foxpro dbf并獲取錯(cuò)誤:無(wú)法初始化鏈接服務(wù)器的OLE DB提供程序“MSDASQL”的數(shù)據(jù)源對(duì)象“(空)”…
win7系統(tǒng)服務(wù)器上的要求嗎,win7和win10哪個(gè)對(duì)硬件要求高_(dá)網(wǎng)站服務(wù)器運(yùn)行維護(hù)
2021年131篇2020年27篇
舉報(bào)
總結(jié)
以上是生活随笔為你收集整理的mysql为何不建议使用外键的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 包装印刷行业裕同集团易普优APS项目顺利
- 下一篇: MySQL 一键卸载