由自定義分頁組件引起的思考,最終的結果是我考慮得到的東西,django早八百年想到了
源於分頁組件的一句切片操作,我就想,每點一次下一頁它都在數據庫裏面查詢全部數據再切片給你,那性能豈不是尿崩。是我太天真了!
userlist = models.fenye.objects.all()[pageinfo.start():pageinfo.end()]
人家django是什麼?大而全的框架,要你替它乾着急?笑話。對於一般人而言,它已經做了足夠的性能調優,放心用就好了。
QuerySet特點總結
- 可切片
使用Python 的切片語法來限制查詢集記錄的數目 。它等同於SQL 的LIMIT 和OFFSET 子句。 - 可迭代
- 惰性查詢
創建查詢集不會帶來任何數據庫的訪問,直到查詢集 需要求值時,Django 纔會真正運行這個查詢。 - 緩存機制
每個查詢集都包含一個緩存來最小化對數據庫的訪問。理解它是如何工作的將讓你編寫最高效的代碼。
當queryset非常巨大時,cache會成爲問題。 - 其他
再就是一些方法的區別,比如有些方法能讓訪問數據庫的次數減少。
可能我知道的也不全所以不在這兒列舉。
最關鍵的就是知識體系要儘可能完整,根據需求選取合適的ORM操作達到性能最佳。 - queryset API