Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
Django访问数据库_Django_Django Models - Fatal编程技术网

Django访问数据库

Django访问数据库,django,django-models,Django,Django Models,在Django models API中使用以下LIMIT子句时-- People.objects.all()[5000000:5000000+5] 为了只返回这5条记录,数据库是否必须遍历所有5万条记录?或者它的访问是非线性的?简而言之,它会扫描到该点,并获得您指定的记录数。这实际上取决于您的数据库,不同的数据库在此查询上具有不同的性能。这不是一个随机访问,如果您这样做5次,您应该期望返回相同的记录,假设您的数据没有更改。如果你做一个订单,你会有更可预测的结果 它将至少遍历人员表主键的索引表。在

在Django models API中使用以下LIMIT子句时--

People.objects.all()[5000000:5000000+5]


为了只返回这5条记录,数据库是否必须遍历所有5万条记录?或者它的访问是非线性的?

简而言之,它会扫描到该点,并获得您指定的记录数。这实际上取决于您的数据库,不同的数据库在此查询上具有不同的性能。这不是一个随机访问,如果您这样做5次,您应该期望返回相同的记录,假设您的数据没有更改。如果你做一个订单,你会有更可预测的结果

它将至少遍历
人员
表主键的索引表。在我看来,这个问题与Django如何处理这个问题无关。Django将像数据库一样处理它。Django的ORM只会将其转换为与此类似的查询:


从500万限额5中选择*

对不起,我指的是非线性访问,不是随机访问。这应该使问题更加清楚。