python – Django查询性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Django查询性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含972字,纯文字阅读大概需要2分钟。
内容图文
![python – Django查询性能](/upload/InfoBanner/zyjiaocheng/780/29f4ba4e636a47d48312dc69cc3d3e1c.jpg)
关于django查询,我有一个与性能相关的问题.
假设我有一张拥有10,000条记录的员工表.现在,如果我想选择5名年龄大于或等于20岁的随机员工,那么就说5,500名员工年龄在20岁以上. django查询将是:
Employee.objects.filter(age__gte=20).order_by('?')[:5]
并且mysql中此查询的原始副本将是:
SELECT * FROM `database`.`employee`
WHERE `employee`.`age` >= 20
ORDER BY RAND ()
LIMIT 5;
从django查询的外观来看,数据库首先返回5,500条记录,然后python随机或按我们选择的顺序对这些记录进行排序,并返回前五个记录的块,而原始查询将直接从数据库返回五条记录.
我的问题是两个查询之间是否有任何性能差异?如果是这样哪一个更好,为什么?
解决方法:
我快速检查了我现有的项目:
queryset = BlahModel.objects.order_by('?')[:5]
print queryset.query
结果是:
SELECT `blah_model`.`id`, `blah_model`.`date` FROM `blah_model` ORDER BY RAND() LIMIT 5;
所以,他们是一样的.
我不会对结果感到惊讶,因为django ORM是sql查询结果和django对象之间的直接映射,所以order_by(‘?’)将等于ORDER BY RAND(),甚至是[:5]语句在mysql中翻译为LIMIT(这里是doc和doc).
内容总结
以上是互联网集市为您收集整理的python – Django查询性能全部内容,希望文章能够帮你解决python – Django查询性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。