W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)使用 ?unique()
? 或 ?db_index
? 的列來檢索單個(gè)對象時(shí),有兩個(gè)原因。首先,由于底層數(shù)據(jù)庫索引的存在,查詢的速度會(huì)更快。另外,如果多個(gè)對象與查找對象相匹配,查詢的運(yùn)行速度可能會(huì)慢很多;在列上有一個(gè)唯一約束保證這種情況永遠(yuǎn)不會(huì)發(fā)生。
例如:
>>> entry = Entry.objects.get(id=10)
會(huì)比以下更快:
>>> entry = Entry.objects.get(headline="News Item Title")
因?yàn)??id
?通過數(shù)據(jù)庫索引,并且保證是唯一的。
執(zhí)行以下操作可能非常慢:
>>> entry = Entry.objects.get(headline__startswith="News")
首先,?headline
?沒有被索引,這將使得底層數(shù)據(jù)庫獲取變慢。
其次,查找不保證只返回一個(gè)對象。如果查詢匹配多于一個(gè)對象,它將從數(shù)據(jù)庫中檢索并傳遞所有對象。如果數(shù)據(jù)庫位于單獨(dú)的服務(wù)器上,那這個(gè)損失將更復(fù)雜,網(wǎng)絡(luò)開銷和延遲也是一個(gè)因素。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: