天天看點

django查詢mysql資料庫代碼優化

前言:

list1 = [[time1,code1],[time2,code2],[time3,code3]…[timek,codek]]

資料庫表app01_programeinfo對應django子產品函數ProgrameInfo

django查詢mysql資料庫代碼優化

list1中所有code在資料庫表中都有對應的name中文名,程式目的是用中文名替換掉list1中相應的code,組成新表傳回

#程式1:
            n = len(list1)
            for i in range(n):
                v_list = models.ProgrameInfo.objects.filter(code=list1[i][1])	#對于list1中每個code,都連接配接搜尋資料庫表一次,擷取Quaryset對象;
                for row in v_list:
                    list1[i][1] = row.name		#取相應的name指派給list1的code
#要進行n次連接配接資料庫查詢,且資料庫表較大,過程用時2.5min
           
#程式2:
			n = len(list1)
            v_list = models.ProgrameInfo.objects.values('code', 'name')	#查詢整個資料庫表一次,傳回對象v_list結構: <QuerySet [{'code': 'code1', 'name': 'name1'}, {'code': 'code2', 'name': 'name2'},...> 仍然是Quaryset對象,但内部是一個字典
            for i in range(n):
                for row in v_list:
                    if row['code'] == list1[i][1]:
                        list1[i][1] = row['name']
#這裡隻需要連接配接資料庫查詢一次,周遊字典時間相對較快,過程用時<1min,大幅縮減
           

肯定還有更好的優化方法,進一步縮減用時,歡迎大家留言指教!