Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django从大型数据库更快地检索数据_Python_Django_Python 2.7_Django Models - Fatal编程技术网

Python 使用Django从大型数据库更快地检索数据

Python 使用Django从大型数据库更快地检索数据,python,django,python-2.7,django-models,Python,Django,Python 2.7,Django Models,我有一个超过一百万条记录的大型数据库表,django检索数据需要很长时间。当我有较少的记录时,数据检索得很快 我使用get()方法从数据库中检索数据。我确实尝试了filter()方法,但当我这样做时,它给出了整个表,而不是在给定条件下进行过滤 目前,我使用以下代码检索数据: context['variables']=variable.objects.get(id=self.kwargs['pk']) 我知道它为什么慢,因为它试图通过所有的记录,并获得id匹配的记录。但是我想知道是否有一种方法可

我有一个超过一百万条记录的大型数据库表,django检索数据需要很长时间。当我有较少的记录时,数据检索得很快

我使用get()方法从数据库中检索数据。我确实尝试了filter()方法,但当我这样做时,它给出了整个表,而不是在给定条件下进行过滤

目前,我使用以下代码检索数据:

context['variables']=variable.objects.get(id=self.kwargs['pk'])

我知道它为什么慢,因为它试图通过所有的记录,并获得id匹配的记录。但是我想知道是否有一种方法可以将搜索限制在最后100条记录,或者是否有一些我使用filter()函数做得不正确的地方。欢迎提供任何帮助。

您使用的是哪种数据库?ID上的
.get
应该可以提供相对快速的查找,因为主键通常是索引的。我正在使用Microsoft sql server 2017 Enterprise作为我的数据库。嗯,那应该没问题。尝试执行原始SQL,看看是否会遇到同样的性能问题。如果是这样的话,可能需要一些解释工作来查看查询陷入困境的地方:
variable.objects.raw('SELECT*FROM variable where id=%s',[self.kwargs['pk']])
我想,您需要调整该行以使其正常工作。id/pk列在数据库中索引了吗?您使用的是哪种数据库?ID上的
.get
应该可以提供相对快速的查找,因为主键通常是索引的。我正在使用Microsoft sql server 2017 Enterprise作为我的数据库。嗯,那应该没问题。尝试执行原始SQL,看看是否会遇到同样的性能问题。如果是这样的话,可能需要一些解释工作来查看查询陷入困境的地方:
variable.objects.raw('SELECT*FROM variable where id=%s',[self.kwargs['pk']])
我想,您需要调整该行以使其正常工作。id/pk列在数据库中索引了吗?