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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
球化剂主要应用于球墨铸铁制备过程 硅铁稀土镁球化剂为主流产品
甲醛为什么溶于水中(甲醛溶于水可以用水除甲醛吗?)
增值税发票风险管理
电子烟:披着“时尚”外衣的健康隐患
手把手教你做银耳奶冻(又凉又甜的夏日清爽甜品,以“银耳”为主题)
房租收益高过存款利息,你愿意买房还是存钱?
买房还款能力如何评估?五步骤助你轻松搞定!
论中国古代经济结构与封建社会的长期延续
坚果什么时候吃最好,每天吃坚果的最佳时间
4 种你以为正常的症状,其实是过敏!
兽医提醒:狗狗误食电池的危险与应对方法
结肠癌晚期治疗方法
探究老班章茶的真实价格与市场价值
大模型如何使用才能最大化其潜力?
浅谈泰山石的文化论文
哪里能找到新能源汽车产业链的人才需求信息?
补牙需要多长时间?补牙全过程详解
补牙的流程及步骤
猫咪食谱:蔬菜选择与禁忌
在家就能做的6个静电小实验:从气球吸附到静电马达
电工基础知识:等电位原理及其应用
从粪便中获取的饮食信息,如何指导临床应用?
高中生学习日语的可能性与实践策略
NBA赛季赛制规则详解:从例行赛到总冠军赛
煤炭的形成过程和中国煤炭的分布
向日葵是春天的植物吗?详解向日葵的种植时间和生长周期
美国临床肿瘤学会指南:癌症患者治疗期间如何正确运动?
底特律变人游戏深度解析,玩后感如何?剧情揭秘!
选购茶叶的产地与品种选择
小学生英语0基础学习指南:全面解析英语启蒙方法与策略