2016-01-13 152 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索引(用於部分匹配)。

相關問題