2010-11-10 58 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

不,在同一列上有兩個索引是沒有意義的。

相關問題