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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
Django后端开发:如何提高接口开发速度
专家提醒:定期进行甲状腺功能检测 为健康预警
合同上的英文签名的名字:法律效力与签署规范的深度解析
掌握Photoshop剪切图层技巧,提升图像处理效率与创作能力
干咳无痰有点胸闷气短
解码器如何正确连接功放?这种连接方法对音质效果有何提升?
黄芪的营养价值及营养成分
盐买加碘盐好还是未加碘盐好?多亏盐厂老板提醒,以后不敢乱吃了
手机丢失后如何通过法律途径寻求赔偿?
这些关于贝多芬《第九交响曲》的冷知识,你知道吗?
5G-A技术应用提速 智慧城市建设加码
香蕉的功效与食用禁忌:从营养成分到八大健康益处
儿童精神发育迟缓如何康复
苹果螺的饲养要点
公安局合同工工资待遇怎么样?
探展 | 音乐与科技的交响
显示器怎么选办公软件用
被蛇咬可能致命,但蛇毒竟是救命良药?!
肠粉的配方比例是多少 肠粉怎么做好吃又简单
高三生涯规划丨高三开学,如何做学业规划,赢在起跑线?
管理团队的奖项有哪些项目
孙悟空被压五行山下五百年,期间到底经历了什么?
内存条可以8g和16g混装吗
张学良原配于凤至病逝,墓碑上刻4个大字,狠狠打了丈夫的脸
特发性震颤最新疗法:从药物到手术的全方位治疗方案
治疗特发性震颤最新研究进展
王者荣耀国际服多平台互动与常见问题解答
脚背上骨头凸起怎么回事
鸿门宴课件(带分段详解)
寿命竟和身高有关!高个子 VS 矮个子,哪种人更长寿?