让我们说我有一个名为Best
它有一个更好的性能过滤器/所有在Django查询集?
我想知道的模型,如果使用Best.objects.all()
会是一个更好的选择,或者Best.objects.filter(this=that)
会更好,整体性能,如果我不需要查询一切
让我们说我有一个名为Best
它有一个更好的性能过滤器/所有在Django查询集?
我想知道的模型,如果使用Best.objects.all()
会是一个更好的选择,或者Best.objects.filter(this=that)
会更好,整体性能,如果我不需要查询一切
使用Best.objects.all()
然后用Python测试if this == that
不是一个好主意。当数据库执行检查时,Best.objects.filter(this = that)
的性能更好。只有满足检查的对象才能在Python中使用。
让我们用另一个例子:amount = len(Best.objects.all())
会比amount = Best.objects.all().count()
慢很多,因为Python不需要解决它。
他们是完全不同的东西,但正如你所问......如果你有一个100万行的表。调用'.all()'需要返回100万行。如果仅为这些行中的一行记录“this ==”,那么最好调用'.filter(this = that)',这样你只需从数据库中取出一行即可。 –
@markwalker_不会调用'Best.objects.filter(this = that)'仍然会用上百万行来确保所有的this = that都被搜索,除非我使用'Best.objects.filter那么它会查询第一个并停止 – Tsuna
它仍然会经过一百万行,但是动作会发生在数据库中,而不是将数据传输到python,因此效率更高。 –