Django 会自动为外键列生成索引吗?
Posted
技术标签:
【中文标题】Django 会自动为外键列生成索引吗?【英文标题】:Does Django automatically generate indexes for foreign keys columns? 【发布时间】:2011-08-24 11:58:22 【问题描述】:Django 是自动为外键生成索引,还是仅仅依赖于底层数据库策略?
【问题讨论】:
依赖ForeignKey中的db_index
参数,默认为True。
【参考方案1】:
Django 自动为所有 models.ForeignKey
列创建索引。
来自Django documentation:
在
ForeignKey
上自动创建一个数据库索引。您可以通过将db_index
设置为False
来禁用此功能。如果您要创建外键以实现一致性而不是连接,或者要创建替代索引(如部分或多列索引),则可能希望避免索引的开销。
【讨论】:
我找不到关于这个事实的任何参考资料。对此有任何参考吗? 运行./manage.py sql appname
,你会看到创建索引的SQL语句。它们紧跟在创建所需的最后一个表的 SQL 之后。
@LukeSneeringer,我不确定您给出的命令是否用于显示索引,但它不再显示了。相反,自己为索引运行./manage.py sqlindexes appname
。
也可以禁用在 ForeignKey 上创建索引:code.djangoproject.com/ticket/13730
@JesseBeder:./manage.py sqlindexes appname
在最近的 Django 版本中不再有效。以上是关于Django 会自动为外键列生成索引吗?的主要内容,如果未能解决你的问题,请参考以下文章