国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django查詢數據庫的性能優化示例代碼

2020-02-16 10:17:57
字體:
來源:轉載
供稿:網友

前言

Django數據層提供各種途徑優化數據的訪問,一個項目大量優化工作一般是放在后期來做,早期的優化是“萬惡之源”,這是前人總結的經驗,不無道理。如果事先理解Django的優化技巧,開發過程中稍稍留意,后期會省不少的工作量。

現在有一張記錄用戶信息的UserInfo數據表,表中記錄了10個用戶的姓名,呢稱,年齡,工作等信息.

models文件

 from django.db import models  class Job(models.Model):  title=models.CharField(max_length=32)  class UserInfo(models.Model):  username=models.CharField(max_length=32)  nickname=models.CharField(max_length=32)  job=models.ForeignKey(to="Job",to_field="id",null=True)

數據表中記錄:

另一張數據表記錄用戶工作的Job表,關聯用戶的工作字段.

要查出每個用戶的用戶名,呢稱和工作等信息

 def index(request):  user_list=models.UserInfo.objects.all()   print(user_list.query)  # 打印查詢時使用的語句  print(type(user_list))  # 打印查詢結果的數據類型   for user in user_list:    print("%s-->%s-->%s" %(user.username,user.nickname,user.job.title))   return render(request,'index.html')

打印信息:

SELECT "app01_userinfo"."id", "app01_userinfo"."username", "app01_userinfo"."nickname", "app01_userinfo"."job_id" FROM "app01_userinfo"<class 'django.db.models.query.QuerySet'>user1-->user1-->pythonuser2-->user2-->linuxuser3-->user3-->golanguser4-->user4-->pythonuser5-->user5-->linuxuser6-->user6-->golanguser7-->user7-->pythonuser8-->user8-->linuxuser9-->user9-->golanguser10-->user10-->linux

在服務端進行這些操作,這些查詢語句的性能是很低的,遍歷取出這10個用戶的姓名,呢稱,工作等信息要在兩張數據庫中執行11次查詢操作.

首先只從UserInfo表中查出所有的用戶記錄,需要執行一次查詢操作.

查詢Job數據表,每循環一次用戶信息的列表,都需要從Job表中查詢一次用戶的工作信息.

數據表中總共記錄了10條用戶記錄,所以還需要循環10次才能從Job表中查詢完成所有用戶的工作信息.所以一共需要執行11次數據庫查詢操作.

那有沒有什么好的方法能夠提高數據庫查詢的效率呢???

 def index(request):  user_list=models.UserInfo.objects.values("username","nickname","job")   print(user_list.query)  # 打印查詢時使用的語句  print(type(user_list))  # 打印查詢結果的數據類型  print("user_list:",user_list)   for user in user_list:    print(user["username"], user["nickname"], user["job"])   return render(request,'index.html')            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤台县| 新河县| 宁阳县| 千阳县| 延长县| 阜宁县| 昌吉市| 海宁市| 德保县| 临猗县| 永年县| 布拖县| 邹城市| 静安区| 万源市| 黔南| 连平县| 平南县| 东乌| 略阳县| 沙河市| 阿鲁科尔沁旗| 左权县| 乐亭县| 调兵山市| 东明县| 西城区| 慈溪市| 即墨市| 广丰县| 湘阴县| 博罗县| 枣阳市| 大方县| 墨脱县| 惠安县| 禹城市| 琼海市| 荆门市| 沽源县| 泰顺县|