Django 会自动创建索引吗?

Tha*_*rry 9 python sql database django postgresql

我正在开发一个 Django 项目,使用 Postgresql 作为附加数据库。我注意到有些查询花费了很长时间,甚至发现我的数据库中许多不同字段有十多个索引,其中一些我认为是不必要的。

我的计划是删除那些我不需要的,但我有兴趣知道 Django 在创建模型时是否以“智能”方式执行此操作,或者是否有一些默认机制用于创建我不知道的索引。

Abd*_*kat 14

Django 确实会自动为某些字段创建索引。例如,外键文档中有说明:

\n
\n

数据库索引会自动在ForeignKey上创建。您可以通过将db_index设置为False来禁用此功能。

\n
\n

另外,当您在字段上unique设置为时:True

\n
\n

请注意,当 unique 为 True 时,\xe2\x80\x99 不需要指定 db_index,\n因为 unique 意味着创建索引。

\n
\n

还关于SlugField

\n
\n

意味着将 Field.db_index 设置为 True。

\n
\n

db_index在字段级别,您可以通过将参数传递给字段来控制字段是否有索引。

\n

indexes您还可以在模型中指定选项Meta

\n
class MyModel(model.Model):\n    ...\n    class Meta:\n        indexes = [\n            models.Index(fields=[\'field1\', \'field2\'], name=\'some_idx\'),\n        ]\n
Run Code Online (Sandbox Code Playgroud)\n