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

时间:2015-03-05 17:54:47

标签: mysql sql database indexing

我使用的是MySQL,但这个问题不是特定于该特定数据库 我有posts表和threads表 没有什么复杂的,当然在posts内我有 thread_id 列,它将帖子绑定到拥有它们的线程。
我希望在该列上有外键约束(posts表中的 thread_id ),如:

  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索引会在选择时自己加速,第二个索引是多余的,或者第二个索引是更快选择所必需的,或者在一列上有两个索引是不错的主意?

1 个答案:

答案 0 :(得分:1)

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

但您还应该考虑通过创建此索引/ es来尝试优化的查询。让多个索引包含同一列并不一定是坏事。