我已经将索引添加到我的django模型中,以便使其上的查询更快一点,但实际上执行时间增加了:
from autoslug import AutoSlugField
from django.db import models
class City(models.Model):
name = models.CharField(max_lenght=30)
population = models.IntegerField()
slug = AutoSlugField(populate_from="name")
class Meta:
indexes = [models.Index(fields=['slug'])]
我用这个函数来计算CBV的执行时间:
def dispatch(self, request, *args, **kwargs):
start_time = timezone.now()
response = super().dispatch(request, *args, **kwargs)
end_time = timezone.now()
execution_time = (end_time - start_time).total_seconds() * 1000
print(f"Execution time: {execution_time} ms")
return response
在将indexes
添加到Meta
类之前,我的CBV中City.objects.all()
的执行时间是:
Execution time: 190.413 ms
但添加后,它变成了:
Execution time: 200.201 ms
你知道为什么会这样吗?也许在slug
字段上使用索引是不可取的?
1条答案
按热度按时间bmp9r5qi1#
我认为这是因为
.all()
在其查询中不使用slug
字段,因此在这种情况下添加该字段实际上没有好处,而是多余的。