【问题标题】:Does Django automatically generate indexes for foreign keys columns?Django 会自动为外键列生成索引吗?
【发布时间】:2011-08-24 11:58:22
【问题描述】:

Django 是自动为外键生成索引,还是仅仅依赖于底层数据库策略?

【问题讨论】:

  • 依赖ForeignKey中的db_index参数,默认为True。

标签: django-models


【解决方案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 版本中不再有效。
猜你喜欢
  • 2010-10-24
  • 2011-08-22
  • 2021-06-03
  • 2016-09-01
  • 2010-09-23
  • 1970-01-01
  • 2011-07-01
  • 2021-07-31
相关资源
最近更新 更多