Django是否自动为外键列生成索引?


75

Django是自动为外键生成索引,还是仅取决于基础数据库策略?


2
取决于db_indexForeignKey中的参数,默认情况下为True。
斯瓦沃米尔Lenart

Answers:


111

Django自动为所有models.ForeignKey列创建索引。

Django文档中

在上自动创建数据库索引ForeignKey。您可以通过设置db_index为禁用此功能False。如果要创建外键以保持一致性而不是联接,或者要创建替代索引(例如部分或多列索引),则可能要避免索引的开销。


我找不到这个事实的参考。有什么参考吗?
GabiMe

1
运行./manage.py sql appname,您将看到用于创建索引的SQL语句。它们紧随SQL之后以创建所需的最后一个表。
路加·斯诺格

7
@LukeSneeringer,我不确定您提供的命令是否用于显示索引,但现在不再显示。而是./manage.py sqlindexes appname自己运行索引。
杰西·贝德

4
也可以禁用在ForeignKey上创建索引:code.djangoproject.com/ticket/13730
Jeff Bauer

1
@JesseBeder:./manage.py sqlindexes appname在最新的Django版本中不再起作用。
SaeX 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.