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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
李子柒推荐:生蚝的神仙吃法
中国10大名山投票评选出炉,黄山、庐山榜上有名,第一名当之无愧
德干火山大喷发:白垩纪末期生物大灭绝的“幕后黑手”
专家解读:老年人便秘的科学治疗方法
古玉收藏热:如何辨别古代玉盘真假?
和田玉糖色盘:传统工艺的当代新生
故宫博物院揭秘:古代玉盘制作工艺探秘
突破英语学习的心理障碍:从自卑到自信的转变之路
吃什么有助睡眠质量
中医治疗5种失眠类型:入睡难、做梦多、易惊醒、定时醒、彻夜醒
夏日炎炎,医生提醒狼疮患者做好这些防护
与“狼”共舞:红斑狼疮患者的治疗与生活指南
红斑狼疮是什么基因
1.5L涡轮增压发动机性能与技术的巅峰对决,谁才是真正王者
如果《哪吒2》票房破70亿,会有许多事发生,将打破全球票房纪录
从储存到烹饪:保持生蚝新鲜的完整攻略
巴美亚教你辨别生蚝新鲜度!
生蚝新鲜度辨别全攻略:远离副溶血弧菌污染
美国华盛顿州生蚝被曝污染!如何保证食用安全?
欠个人债务纠纷怎么办?是否会影响征信?
DiskGenius vs PartitionGuru:谁才是ESP分区神器?
微软推荐:ESP分区最佳容量是多少?
黄山旅游攻略:中国最著名的山脉之一
早期肝癌治愈率70%以上,记住早发现早治疗!出现症状,及时就医
专家提醒:服用中药期间不宜饮用红茶
和平精英×熊出没:当光头强拿起AK,这波联动太秀了!
清蒸生蚝的最佳时长揭秘!
秋季生蚝季:从选购到烹饪,教你蒸出完美口感!
2025 Steam免费游戏大预测:限时免费与永久免费各有优劣
Steam平台十大热门免费游戏推荐