是否有理由在MySQL表中的列将有一个独特的和正常的索引呢?
问题描述:
所以这是一个问题,我一直在问pyroCMS家伙,因为在翻阅那里的源代码时,我注意到新闻模块的news_categories表在“slug”列上有两个索引。是否有理由在MySQL表中的列将有一个独特的和正常的索引呢?
任何想法?
答
创建非唯一索引并没有意义,它只会降低表上的写性能(因为需要维护两个相同的索引)。
有趣的是Oracle
在这种情况下表现得更加一致。
如果您指示Oracle
在已使用UNIQUE
索引编制索引的列上创建普通索引(反之亦然),则会引发错误。
但是,如果您创建一个普通索引,然后创建一个UNIQUE CONSTRAINT
(使用ALTER TABLE ADD CONSTRAINT
),它将创建约束并将使用现有的普通索引来执行它。
答
不,在同一列上有两个索引是没有意义的。
这没有任何意义。如果列上有唯一索引,则不需要单独的“普通”索引。除非其中的一个索引实际上是一个多列索引。 – kijin 2010-11-10 21:44:45
创建表的SQL在这里。 https://gist.github.com/671584 – Voltxion 2010-11-10 21:47:16
我敢打赌,原因是“无能”。 – ceejayoz 2010-11-10 21:55:58