您的位置:首页 > 产品设计 > UI/UE

django querty set db hit

2014-03-22 16:21 337 查看
from questions.models import User

from django.db import connection

connection.queries

a = User.objects.all().prefetch_related('question_set')

print a

connection.queries

print a[0]

connection.queries

print a[1]

connection.queries

--------------------------------------------------

--------------------------- less db hit -----------------

connection.queries

a = User.objects.all().prefetch_related('question_set')

u1,u2 = a[0],a[1]

connection.queries

print u1

connection.queries

print u2

connection.queries

type(a)

django.db.models.query.QuerySet

//evaluated lazily , 每次访问queryset的每个元素,才会真正的hit db,

不要将queryset作为数组使用, 因为对queryset的的部分操作 不会被cache, 只是改为 执行新的sql语句

因此 显示evaluate 可以避免不必要的数据库访问 queryresult = list(queryset)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: