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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
文化传承探访行②丨永春魁星文化 千年传承唱新韵
文创青年,让小城潮起来|小城故事·县城里的年轻人
武当山:千年道教圣地的历史传承与自然人文之美
宜攀高速宁攀段试通车,宁南县首次接入高速路网
宜攀高速宁会隧道攻克复杂地质难题,掘进突破9000米
投资近300亿,宜攀高速关键路段建成通车
甄嬛的服饰密码:清代宫廷礼制与现代古风穿搭
从宫廷到现代:《甄嬛传》配色在设计中的应用指南
两部古装剧服装设计对比:一个追求传统,一个融合现代
家庭义务是什么
送养女儿15年后,生父母状告养父母讨要抚养权
体位性低血压如何确诊?医生详解5种检查方案
兴隆山滑雪到海洋公园:兰州冬春旅游3条精品线路出炉
凤凰岭四季美景地图:春赏花、夏避暑、秋摄影、冬观雪
探寻燕窝替代品:全面解析各类天然滋补食材及其功效
睡醒后感觉头晕目眩,是怎么回事?
氯巴占片医保谈判降价超70%,罕见病患者迎来用药福音
难治性癫痫用药指南:氯巴占的使用方法、副作用与医保政策
难治性癫痫新希望:氯巴占片纳入医保,这些副作用需警惕
185国研究证实:无烟一代政策将减少40%肺癌死亡
中山一院肾内科:打造高素质医学人才的“黄埔军校”
广东高州市人民医院原院长王茂生贪腐2亿获刑,曾是知名“王一刀”
宿舍防灰指甲:勤洗手、不共用,保持足部干燥
北宫雨泽教你写出动人情书
冬季必备:酸菜炒大肉的美味秘诀
羊价暴跌,养殖户如何应对?
胃溃疡治疗方案:药物、饮食、中药和手术四大疗法
女性友谊中的称呼陷阱,你中了吗?
赶集必备!常营大集营业时间、交通方式和购物指南
优酷主办《甄嬛传》13年重聚晚会,票价580元起引热议