Django模型:是否有理由使用db_索引创建搜索字段?
Supose有一个表UserProfile: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
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)时,假设两个字段都进行了索引,那么行为会是什么。使用索引?