【问题标题】:unique=true doesn't create indexunique=true 不创建索引
【发布时间】:2022-11-24 05:04:30
【问题描述】:
Email = models.EmailField(max_length = 300, unique = True) 

不在 SQLite 3 上创建索引。文档说 unique = True 将创建索引。但是检查 SQLite 它没有被创建。

Documentation

【问题讨论】:

  • 你的问题是什么?
  • 如何在 unique=true 字段上创建索引
  • 大多数数据库会自动为唯一约束创建索引。仅限 Django明确地如果不是这种情况,则创建一个。

标签: django sqlite django-models


【解决方案1】:

如果该字段被标记为唯一,大多数数据库后端会自动创建一个索引。事实上,在 source code [GitHub] 中我们看到:

def _field_should_be_indexed(self, model, field):
    return field.db_index and not field.unique

所以如果一个字段被标记为唯一的,默认情况下它会不是被索引,因为数据库本身已经这样做了。

对于外键也是如此,一些数据库也会自动为其建立索引。

【讨论】:

  • 它也会在 postgresql 上创建索引。如果唯一=真
猜你喜欢
  • 2019-05-26
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2017-02-06
  • 2013-10-18
  • 2012-04-03
  • 1970-01-01
相关资源
最近更新 更多