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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
教育专家:双休制不是简单“放养”需构建过渡机制,使学生尽快形成自主学习节律
如何高效掌握软件测试自学路线?详细指南在这里!
创造效益和价值,是经营者的使命
财务合规必做清单!7件事确保企业无后顾之忧
帮助孩子增强自我价值感的重要性
“癌症之王”胰腺癌治疗迎来突破:新药临床试验总生存率超90%
DNA鉴定如何证明父子关系
智能酒店客控系统:重塑住宿体验,引领未来潮流
陶弘景:南朝梁医药家、文学家,人称“山中宰相”
肺部CT检查报告单怎么看
中国航展亮点频出,“新质生产力”引领未来
建议立法禁止16岁以下未成年人使用社交媒体,可行吗?
昆明住房公积金贷款条件
标注工具Labelme和Labelimg的区别与选择
美国留学期间吸毒现象的多维探讨
大连拔牙价格差异解析:从几百到上千,影响因素全解
JAMA子刊 | 产后尿失禁如何康复训练更有效?北京协和医院妇产科提出科学依据
长双层手指甲的原因是什么?
如何戒掉“报复性熬夜”?
体检发现“肺纹理增粗”,到底是怎么一回事呢?
风帆蓄电池的生产日期在哪里
舌尖上的新疆:不可错过的美食之旅
命宫无主星的富贵格局解析
从隋唐洛阳城城市功能的转变看唐朝前期洛阳的开放性
类Rogue游戏有哪些 最热类Rogue游戏排行榜前十
核工程核技术就业薪酬有多高
哪些行业适合小投资大回报?
白细胞高会引起哪些症状
怎么禁止js96110网站跳转
服务器发展历程:从物理机到Serverless的四大关键阶段