第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Rails:include vs.:join

Rails:include vs.:join

米琪卡哇伊 2019-07-25 15:36:58
Rails:include vs.:join這更像是“為什么這樣做的事情”這個(gè)問(wèn)題,而不是“我不知道該怎么做”這個(gè)問(wèn)題......所以關(guān)于拉動(dòng)你知道你將要使用的相關(guān)記錄的福音就是使用,:include因?yàn)槟銓@得一個(gè)連接并避免一大堆額外的查詢:Post.all(:include => :comments)但是,當(dāng)您查看日志時(shí),沒(méi)有發(fā)生加入:Post Load (3.7ms)   SELECT * FROM "posts"Comment Load (0.2ms)   SELECT "comments.*" FROM "comments"                         WHERE ("comments".post_id IN (1,2,3,4))                         ORDER BY created_at asc)它正在采取一種捷徑,因?yàn)樗鼤?huì)立即提取所有注釋,但它仍然不是連接(這是所有文檔似乎都說(shuō)的)。我可以獲得連接的唯一方法是使用:joins而不是:include:Post.all(:joins => :comments)日志顯示:Post Load (6.0ms)  SELECT "posts".* FROM "posts"                     INNER JOIN "comments" ON "posts".id = "comments".post_id我錯(cuò)過(guò)了什么嗎?我有一個(gè)有六個(gè)關(guān)聯(lián)的應(yīng)用程序,在一個(gè)屏幕上我顯示所有這些數(shù)據(jù)。似乎最好有一個(gè)加入查詢而不是6個(gè)人。我知道在性能方面,進(jìn)行連接而不是單個(gè)查詢并不總是更好(事實(shí)上,如果你花費(fèi)時(shí)間,看起來(lái)上面的兩個(gè)單獨(dú)的查詢比連接更快),但是在所有文檔之后我一直在閱讀,我很驚訝地看到:include不像宣傳的那樣工作。也許Rails的是認(rèn)識(shí)到性能問(wèn)題,并除非在某些情況下,不加入呢?
查看完整描述

3 回答

?
千萬(wàn)里不及你

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊

似乎:includeRails 2.1改變了功能。Rails用于在所有情況下進(jìn)行連接,但出于性能原因,在某些情況下將其更改為使用多個(gè)查詢。 Fabio Akita的這篇博客文章提供了有關(guān)變化的一些很好的信息(參見(jiàn)標(biāo)題為“Optimized Eager Loading”的部分)。


查看完整回答
反對(duì) 回復(fù) 2019-07-25
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊

.joins將只加入表格并帶來(lái)選定的字段作為回報(bào)。如果在連接查詢結(jié)果上調(diào)用關(guān)聯(lián),它將再次觸發(fā)數(shù)據(jù)庫(kù)查詢

:includes將急切加載包含的關(guān)聯(lián)并將其添加到內(nèi)存中。:includes加載所有包含的表屬性。如果在包含查詢結(jié)果上調(diào)用關(guān)聯(lián),則不會(huì)觸發(fā)任何查詢


查看完整回答
反對(duì) 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 666 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)