《數(shù)據(jù)庫(kù):django ORM如何處理N+1查詢》文章已經(jīng)歸檔,站長(zhǎng)之家不再展示相關(guān)內(nèi)容,下文是站長(zhǎng)之家的自動(dòng)化寫作機(jī)器人,通過(guò)算法提取的文章重點(diǎn)內(nèi)容。這只AI還很年輕,歡迎聯(lián)系我們幫它成長(zhǎng):
數(shù)據(jù)庫(kù)N+1查詢是個(gè)常見(jiàn)的問(wèn)題,簡(jiǎn)單描述場(chǎng)景如下...
所以N+1問(wèn)題其實(shí)應(yīng)該叫做1+N問(wèn)題,這只是一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)模式的問(wèn)題.但是會(huì)對(duì)數(shù)據(jù)庫(kù)帶來(lái)很大的壓力,一個(gè)簡(jiǎn)單的列表頁(yè)可能會(huì)有幾百次數(shù)據(jù)庫(kù)查詢...
N+1問(wèn)題并不是ORM獨(dú)有,只是使用orm的時(shí)候,數(shù)據(jù)庫(kù)表中的行變成一個(gè)對(duì)象,于是很自然的就容易使用上面的方法來(lái)進(jìn)行查詢不使用orm進(jìn)行編程的情況,一般直接用子查詢或者innerjoin...
數(shù)據(jù)庫(kù)反范式設(shè)計(jì),說(shuō)直白點(diǎn),就是把表合并,設(shè)計(jì)成冗余表,這可能會(huì)帶來(lái)兩個(gè)問(wèn)題...
加緩存把整個(gè)列表頁(yè)加上緩存.這樣無(wú)論是繼續(xù)執(zhí)行1+N次查詢,還是用innerjoin1次查詢搞定,都可以...
數(shù)據(jù)庫(kù)本身處理不了高并發(fā),因?yàn)槲覀冎荒鼙WC單個(gè)數(shù)據(jù)項(xiàng)的操作是原子的,而數(shù)據(jù)庫(kù)的查詢是以列表為基本單元,這是個(gè)天然矛盾,無(wú)解...
......
本文由站長(zhǎng)之家用戶“l(fā)utaf.com”投稿,本平臺(tái)僅提供信息索引服務(wù)。由于內(nèi)容發(fā)布時(shí)間超過(guò)平臺(tái)更新維護(hù)時(shí)間,為了保證文章信息的及時(shí)性,內(nèi)容觀點(diǎn)的準(zhǔn)確性,平臺(tái)將不提供完整的內(nèi)容展現(xiàn),本頁(yè)面內(nèi)容僅為平臺(tái)搜索索引使用。需閱讀完整內(nèi)容的用戶,請(qǐng)聯(lián)系作者獲取原文。
(舉報(bào))