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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
逃逸保险理赔全解析:了解您的权益与责任
交通肇事逃逸后的心理危害:心灵创伤与救赎之路
优秀传统文化中蕴藏心理学根基 助力青少年心理健康的实践探索
大理古城周边旅游景点:从南门到洱海,一场说走就走的旅行
从风险到目标:资产配置的四大核心原则
股市新手必读:五本价值投资经典书籍推荐
国家医保局新年第一课:呼吁1.5万家药企上传数据
2024医疗大数据四重赋能药企市场准入深度解析(附案例)
大质数保障RSA安全,还在多领域展现独特价值
化解煞气招财纳福:龙龟摆件在现代家居的风水应用
乙巳蛇年风水要点:东南方位摆龙龟,提升人缘运
石雕到3D打印:龙龟艺术的传承与创新之路
《汤姆·索亚历险记》:一场关于勇气与成长的冒险
《汤姆·索亚历险记》第九章:一场意外的谋杀案
咸阳召开抗衰老学术研讨会,八子补肾胶囊研究获重大突破
海葬兴起:价格高企、预约排队考验推广之路
三地率先落地外商独资医院,高端医疗市场迎外资入局
从“积极废人”到真正积极:走出行动无力的困境
吉利德新药临床试验:HIV预防效果达96%,一年仅需注射两次
如何在复杂的人际关系中保持高效沟通?
情感品牌 – 在品牌与其客户之间建立深层情感联系
福建四大景区精华游:武夷山水、鼓浪屿、开元寺、三坊七巷
泉州春节主打非遗牌,300项活动邀你体验闽南文化
保生大帝信仰融入闽南古厝,成两岸交流重要纽带
泉州“世遗”三周年,漳州古城见证闽南千年文化
【地评线】金羊网评:“巳巳如意,生生不息”,在2025春晚祝福中奋楫笃行
必看!多功能角磨机使用全解析与选购指南
春节临近 春联“霸屏”年货清单
黄鹤楼的传说:辛氏酒家与仙人乘鹤的故事
黄鹤楼:崔颢李白打卡圣地?