Django连表查询性能优化详解
创作时间:
作者:
@小白创作中心
Django连表查询性能优化详解
引用
CSDN
1.
https://blog.csdn.net/python113/article/details/121316459
回顾之前的外键查询
之前有两个表,利用外键关联:
就是通过一个字段点出来的。循环获取数据,再获取外键里面的数据的时候,会再次的执行sql语句进行数据库的查询。所以,性能不好,能不能在查询数据的时候,就把外键关联的另一个表里面的数据也查询出来呢?就不需要在要拿外键数据的时候再次的查询。
第一个方法
用value(),将要拿的外键字段放到里面。但是这个查询出来的值的类型是字典类型。如果不想要查询出来的是字典类型,还想提高性能,如何做?
第二个方法(select_related()连表查,性能差)
数据多,用这个。那么这样写查询的sql语句是什么:
SELECT
`myfirst_article`.`id`,
`myfirst_article`.`title`,
`myfirst_article`.`content`,
`myfirst_article`.`category_id`,
`myfirst_article`.`createtime`,
`myfirst_article`.`updatetime`,
`myfirst_category`.`id`,
`myfirst_category`.`name`
FROM
`myfirst_article` INNER JOIN `myfirst_category`
ON (`myfirst_article`.`category_id` = `myfirst_category`.`id`)
也就是用INNER JOIN 进行关联查询。也就是在第一次查询的时候主动做连表。连表会慢,效率低。
第三个方法(prefetch_related()多次单表查,性能高)
数据多用这个:
SELECT
`myfirst_article`.`id`,
`myfirst_article`.`title`,
`myfirst_article`.`content`,
`myfirst_article`.`category_id`, `myfirst_article`.`createtime`,
`myfirst_article`.`updatetime`
FROM `myfirst_article`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
冬笋要焯水吗?3到5分钟是关键
中英文电商系统如何处理跨语言的订单处理和客户服务?
可转换债券的转股机制及其多维影响
渐冻症挂什么科?一文读懂ALS就医指南
干湿分离拖把:清洁效率与卫生体验的完美结合
平板投屏到电视的6种方法详解
核磁共振检查的是什么
怎样科学运动以实现减肥瘦身
渤海跨海通道有新进展:设计长约125公里,连接大连与烟台
阮小二自杀殉国,梁山108将背后的震撼真相!
奶茶健康科普:美味背后的健康考量
法律如何保护公民的债权:从消费者权益到债权人权利的全面解析
流程文档的重要性及其方法
GDPR是什么?解析与《日本个人信息保护法》的比较以及日本企业应注意的要点
套细胞淋巴瘤分几种
文竹风水与寓意(探秘文竹的风水禁忌与吉祥含义)
青蛙的解剖结构及功能
电梯定期维保的必要性与实施策略
如何看待场的黄金价格?这个价格反映了怎样的市场趋势?
发烧时,冷毛巾还是热毛巾?正确降温策略
探索用户体验为核心的网页设计理念与实践
栏杆扶手设计规范
心理健康问题的社会影响
电信诈骗数量统计图:法律视角下的数据分析与应对策略
餐厅人力资源配置怎么写
参加葬礼要知道“1礼不收,2话不说,4人不去”,老规矩要遵守
打羽毛球的基本技巧(掌握正确的姿势和用力)
房产证过户需要啥手续:全流程详解与法律风险防范
在家安装风力涡轮机:完整指南和建议
云南农业大学全国排名和最强专业解析