for循环内的低效数据库查询
Inefficient database query inside a for loop
我正在编写如下代码。它使用的是 Django,但这可能发生在其他情况下。我也在使用 Postgres 作为 DB 顺便说一句。
for elem in elemList:
return_obj = someModle.objects.get(something=elem)
if return_obj is not None:
return_list.append(return_obj)
return return_list
此处每次都会生成并执行一个新的数据库查询。由于循环可能很大,因此可能会有大量的数据库执行。我想知道是否有更好的方法来完成这项工作。
首先:如果something=elem
条件不匹配任何对象,你不会得到None
,someModel
会引发DoesNotExist
异常。
其次,你可以试试这个:
return_list = someModel.objects.filter(something__in=elemList)
return return_list
我正在编写如下代码。它使用的是 Django,但这可能发生在其他情况下。我也在使用 Postgres 作为 DB 顺便说一句。
for elem in elemList:
return_obj = someModle.objects.get(something=elem)
if return_obj is not None:
return_list.append(return_obj)
return return_list
此处每次都会生成并执行一个新的数据库查询。由于循环可能很大,因此可能会有大量的数据库执行。我想知道是否有更好的方法来完成这项工作。
首先:如果something=elem
条件不匹配任何对象,你不会得到None
,someModel
会引发DoesNotExist
异常。
其次,你可以试试这个:
return_list = someModel.objects.filter(something__in=elemList)
return return_list