2010-11-10 22 views
1

所以这是一个问题,我一直在问pyroCMS家伙,因为在翻阅那里的源代码时,我注意到新闻模块的news_categories表在“slug”列上有两个索引。是否有理由在MySQL表中的列将有一个独特的和正常的索引呢?

任何想法?

+0

这没有任何意义。如果列上有唯一索引,则不需要单独的“普通”索引。除非其中的一个索引实际上是一个多列索引。 – kijin 2010-11-10 21:44:45

+0

创建表的SQL在这里。 https://gist.github.com/671584 – Voltxion 2010-11-10 21:47:16

+0

我敢打赌,原因是“无能”。 – ceejayoz 2010-11-10 21:55:58

回答

2

创建非唯一索引并没有意义,它只会降低表上的写性能(因为需要维护两个相同的索引)。

有趣的是Oracle在这种情况下表现得更加一致。

如果您指示Oracle在已使用UNIQUE索引编制索引的列上创建普通索引(反之亦然),则会引发错误。

但是,如果您创建一个普通索引,然后创建一个UNIQUE CONSTRAINT(使用ALTER TABLE ADD CONSTRAINT),它将创建约束并将使用现有的普通索引来执行它。

0

不,在同一列上有两个索引是没有意义的。

相关问题