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`
看到是只是查询了一个表,但是我们可以用外键点出来外键里面的东西。
热门推荐
不要挑战人性:用心理学实验解读人性复杂性
西施病逝:春秋第一美女的悲剧命运
2023年我国无偿献血人次超1699万,同比增长5.9%
无限流小说如何用对话打造紧张氛围?
《征战乐园》:无限流小说的创意巅峰
光盘刻录完全指南:从工具准备到实战技巧
音乐CD刻录大师 vs Nero8:谁才是真正的刻录神器?
卡托普利片:心血管疾病治疗的重要选择
卡托普利片&氢氯噻嗪:降压CP了解一下?
南非旅游的最佳季节是什么时候?
诸葛亮错杀刘封和马谡,蜀汉军事力量大减
《如龙》真人剧花絮曝光:神室町场景完美还原
错用马谡:诸葛亮北伐的致命失误
年度剧集盘点|悬疑剧稍显乏力,但口碑力作还是支棱了起来
健康管理:为什么、怎么做以及选择什么
他汀类药物真的能预防颈动脉斑块吗?
手机秒变单反!专业模式摄影技巧,解锁智能手机大片秘籍
从霸气到诗意:杭州高中首考标语各具特色
工业物联网等十大技术重塑制造业未来
唱歌提升肺活量有科学依据,四种呼吸练习助力效果翻倍
全自动VS透气设计VS免泵自充:三款户外充气床深度对比
分房睡:老年人情感与健康的双重考验
大雁塔站:西安地铁3、4号线换乘站,邻近大雁塔与历史博物馆
四年级期末考试焦虑,家长如何“神助攻”
青少年社会认知发展的角色扮演因素
核桃仁粥:一碗就能补脑的养生美味
医保甲类药品新增91种,感冒止痛等常用药全额报销
清朝咸丰年间,乔家大院里上演了一段跨越数十年的爱恨情仇。乔致庸与江雪瑛这对青梅竹马,因家族利益被迫分离。江雪瑛选择报复与反抗,在数十年的挣扎后,最终释怀。
营养师谢施敏教你钙片怎么吃才最有效
江西13大景区迎晴好天气,气温适中利于出游