DB中有很多对象,因此在Admin中搜索速度非常慢。 我定义了这些模型:
class Log(models.Model):
message = models.TextField(blank=True, null=True)
user = models.ForeignKey(AUTH_USER_MODEL, null=True, blank=True)
class LogEmail(models.Model):
log = models.ForeignKey(Log)
email = models.CharField(max_length=350, db_index=True)
site = models.ForeignKey('sites.Site')
这是我的ModelAdmin:
class LogAdmin(admin.ModelAdmin):
search_fields = ('logemail__email',)
所以,我在LogEmail中有电子邮件字段的索引,我猜我的FK索引是默认创建的。我怎样才能加速这件事呢?我尝试添加index_together
,例如:
class LogEmail(models.Model):
log = models.ForeignKey(Log)
email = models.CharField(max_length=350, db_index=True)
site = models.ForeignKey('sites.Site')
class Meta:
index_together = (
('log', 'email'),
)
但我没有发现任何差异。
答案 0 :(得分:0)
我注意到我的网站存在类似问题,我通过使用相关对象注释查询集来加快速度,以避免对每个对象进行查询。
JOIN
这会在查询中添加{{1}}子句,并有助于加快搜索速度。