在一个数据库列中设置两个索引

Setting Two Indexes In One Database Column

我正在使用 MySQL 但这个问题并不特定于那个特定的数据库。
我有 posts table 和 threads table.
没有什么复杂的,当然在 posts 中我有 thread_id 列将帖子绑定到拥有它们的线程。
我想对该列进行外键约束(thread_id in posts table),例如:

  CONSTRAINT `thread_fk` FOREIGN KEY (`thread_id`) REFERENCES `threads` (`id`) ON DELETE CASCADE ON UPDATE CASCADE

所以问题是,在 thread_id 列上也有第二个索引是否明智?
像这样:

KEY `thread_idx` (`thread_id`)

或:

 INDEX `thread_idx` (`thread_id`)

在选择时,FOREIGN KEY 索引自身是否会加快速度,使第二个索引变得多余,或者第二个索引对于更快的选择是必需的,或者在一列上有两个索引是个坏主意?

我不确定您使用的是哪个 RDBMS,但通常外键不会创建索引。为外键涉及的列创建索引被认为是一种很好的做法。

但是您还应该考虑通过创建此 index/es 尝试优化的 query/ies。拥有包含同一列的多个索引不一定是坏事。