W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
理解 ?QuerySets
?是用簡單代碼獲得高效率的關(guān)鍵。特別是在:
要避免執(zhí)行過程中的問題,一定要理解:
除了緩存整個(gè) ?QuerySet
?之外,還緩存了 ?ORM
?對(duì)象的屬性結(jié)果。 通常,不可調(diào)用的屬性將被緩存。 例如,假設(shè)示例博客模型:
>>> entry = Entry.objects.get(id=1)
>>> entry.blog # Blog object is retrieved at this point
>>> entry.blog # cached version, no DB access
但一般來說,可調(diào)用對(duì)象屬性每次都會(huì)觸發(fā)數(shù)據(jù)庫查詢:
>>> entry = Entry.objects.get(id=1)
>>> entry.authors.all() # query performed
>>> entry.authors.all() # query performed again
要使用 ?QuerySet
?的緩存行為,你可能需要使用 ?with
?模板標(biāo)簽。
當(dāng)你有很多對(duì)象時(shí),?QuerySet
?的緩存行為可能會(huì)導(dǎo)致大量的內(nèi)存被使用。在這種情況下,?iterator()
? 可能會(huì)有幫助。
?QuerySet.explain()
? 為你提供有關(guān)數(shù)據(jù)庫如何執(zhí)行查詢的詳細(xì)信息,包括使用的索引(indexes)和連接(jion)。這些細(xì)節(jié)可能會(huì)幫助你找到可以更有效地重寫的查詢,或確定可以添加的索引以提高性能。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: