带有ForeignKey的列是否自动创建索引?
或者我需要手动添加index=True
?
some_field = Column(Integer, ForeignKey(SomeModel.id))
谢谢!
答案 0 :(得分:12)
您需要明确指定index=True
或创建Index
对象:
Index('myindex', mytable.c.col1, mytable.c.col2, unique=True)
,它允许更多地控制索引的其他参数,例如多个列的名称和支持。
有关详细信息,请参阅Indexes。
答案 1 :(得分:1)
正如范恩的回答所表明的那样,您应按照文档所示明确添加索引。
外键的实现是特定于数据库的,某些数据库(例如MySQL )仍会自动为外键列创建索引,而其他数据库则不会。请参阅上面评论中的讨论。
例如来自MySQL docs:
MySQL要求对外键列进行索引;如果您创建一个 有外键约束但在给定列上没有索引的表 索引已创建。