Django模型:是否有理由使用db_索引创建搜索字段?

Django模型:是否有理由使用db_索引创建搜索字段?,django,django-models,django-database,Django,Django Models,Django Database,Supose有一个表UserProfile: class UserProfile(models.Model): name = models.CharField(max_length=30, db_index=True) # db_index 1 email = models.EmailField(unique=True, db_index=True) # db_index 2 password = models.CharField(max_length=6

Supose有一个表UserProfile:

class UserProfile(models.Model):
    name = models.CharField(max_length=30, db_index=True)     # db_index 1
    email = models.EmailField(unique=True, db_index=True)     # db_index 2
    password = models.CharField(max_length=60)
    birthday = models.DateField(db_index=True)                # db_index 3
    about = models.TextField(blank=True)
    created = models.DateField(auto_now_add=True)
    lang = models.CharField(max_length=1, choices=LANG, blank=True)
在这个网站上有一个带有这样的过滤器的搜索表单:姓名、年龄、电子邮件

那么,在这些过滤器中使用db_索引有真正的原因吗


谢谢

当然可以。Django使用数据库,因此如果您在这些字段上搜索,那么数据库索引将有助于查找

请注意,一旦创建了表,
syncdb
即使在将
db\u index
添加到定义后再次运行,也不会添加索引-您需要直接在数据库shell中修改表定义,或者使用类似于South的工具

请记住,与大多数规模问题一样,这些问题只适用于统计上有大量行的情况(10000行不是很大)


此外,每次插入时,都需要更新索引。因此,在添加索引的列上要小心。

在Django 1.5之前,如果只能对单个字段进行索引,那么在执行qs.filter(field1=foo,field2=2)时,假设两个字段都进行了索引,那么行为会是什么。使用索引?