orm优化
1.数据库技术进行优化,包括给字段加索引,设置唯一性约束等等;
2.查询过滤工作在数据库语句中做,不要放在代码中完成(看情况);
3.如果要一次查询出集合的数量,使用count函数,而不是len函数,但是如果后面还需要到集合,那就用len,因为count还需要进行一次数据库的操作;
4.避免过多的使用count和exists函数;
5.如果需要查询对象的外键,则使用外键字段而不是使用关联的外键的对象的主键;
例子:
a.b_id # 正确 a.b.id # 错误
6.在通过all语句查询时,不要做跨表查询,只查询当前表中有的数据,否则查询语句的性能会下降很多;
比如:a表存在外键b表
a.b.all() # 错误
7.如果想要查询其他表的数据,则加上select_related(ForeignKey字段名,其实就是主动联表查询,性能也会下降),如果有多个,则在括号中加上;
8.加only参数是从查询结果中只取某个字段,而另外一个defer方法则是从查询结果中排除某个字段;
9.不要获取你不需要的东西,可以通过values和value_list实现;
values返回的是字典数组,比如:[{'key1': value1, 'key2': value2}, {'key1': value3, 'key2': value4}] value_list返回的是tuple数组 [('value1', 'value2'), ('value3', 'value4')] value_list+flat=True返回的是数组 ['value1', ...]
10.如果想知道是否存在至少一个结果,使用exists,而不是使用if QuerySet;但是如果后面需要用到前面的QuerySet,那就可以使用if 判断;
# Don't waste a query if you are using the queryset books = Book.objects.filter(..) if len(books) > 5: do_stuff_with_books(books) # If you aren't using the queryset use count books = Book.objects.filter(..) if books.count() > 5: do_some_stuff() # But never if len(Book.objects.filter(..)) > 5: do_some_stuff()
11.在任何位置使用QuerySet.exists()或者QuerySet.count()都会导致额外的查询;
12.不要做无所谓的排序,排序并非没有代价,每个排序的字段都是数据库必须执行的操作;
13.如果要插入多条数据,则使用bulk_create来批量插入,减少sql查询的数量;
14.对于缓存的QuerySet对象使用with标签,可以让数据被缓存起来使用;
15.使用QuerySet.extra明确的指出要查询的字段;
16.批量的更新和删除则使用Queryset.update和delete函数,但是更新操作注意对象的缓存;
17.使用QuerySet.Iterator迭代大数据;
当你获得一个queryset的时候,django会缓存下来,保存在内存中,如果需要对queryset进行多次的循环,那么这种缓存无可厚非; 但是如果你只需要进行一次的循环,那么其实并不需要缓存,这个使用就可以使用iterator;
比如:
for book in Books.objects.all().iterator(): do_stuff(book)
18.如果想判断是否存在外键,只需要判断外键的id即可;
19.不要在循环中查询,而是提前取出,并且做好映射关系,这样在循环中直接通过字典的形式获取到;
20.当计算出一个QuerySet的时候,如果还需要进行多次循环的话,则可以先保留着这个缓存,但是如果只是使用一次的话,没有必要使用到缓存;
python优化:
1.排序尽量使用 .sort(), 其中使用 key 比 cmp 效率更高
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]