【发布时间】:2012-01-17 06:54:41
【问题描述】:
带有 ForeignKey 的 Column 会自动创建索引吗?
或者我需要手动添加index=True?
some_field = Column(Integer, ForeignKey(SomeModel.id))
谢谢!
【问题讨论】:
标签: sqlalchemy
带有 ForeignKey 的 Column 会自动创建索引吗?
或者我需要手动添加index=True?
some_field = Column(Integer, ForeignKey(SomeModel.id))
谢谢!
【问题讨论】:
标签: sqlalchemy
您确实需要指定index=True 或显式创建Index 对象:Index('myindex', mytable.c.col1, mytable.c.col2, unique=True),这允许对索引的其他参数进行更多控制,例如名称和对多列的支持.
更多信息请参见Indexes。
【讨论】:
正如 van 的回答所示,您应该按照文档的指示明确添加索引。
外键的实现是特定于数据库的,某些数据库(例如 MySQL) 仍会自动为外键列创建索引,但其他数据库不会。请参阅上面 cmets 中的讨论。
例如来自MySQL docs:
MySQL 要求对外键列进行索引;如果你创建一个 具有外键约束但在给定列上没有索引的表, 索引已创建。
【讨论】: