2016-01-13 99 views
0

我有一个自定义的用户模型,需要在以下领域:将db_index添加到Django用户模型?

class MyUser(AbstractBaseUser, PermissionsMixin): 
    username = models.CharField(max_length=60, unique=True) 
    email = models.EmailField(max_length=120, unique=True) 
    full_name = models.CharField(max_length=50, blank=True) 
    is_active = models.BooleanField(default=True) 

我知道usernameemail,因为它被设置为unique=True会自动添加一个db_index

为我的full_nameis_active字段添加db_index=True是否有意义?

我有一个搜索功能,检查正则表达式是否匹配full_name。在我的模特经理中,我也对is_active=True进行筛选。

我想优化查询,但不希望将表添加到我的数据库,如果没有必要。

谢谢!

回答

0

如果您使用regex进行搜索,该索引是否用于full_name值得怀疑。您希望通过查看查询计划器的输出(例如postgres:EXPLAIN ANALYZE select * from myuser where user=...;)来确保这一点。

如果它没有被使用(例如,因为正则表达式小写的一切),那么你必须创建一个不同的索引。例如在较低的封装值或甚至GIN索引(用于部分匹配)。

相关问题