2012-04-19 60 views
1

什麼是最好的方式來索引MySQL中的數百萬個電子郵件地址,同時最小化索引的大小?在MySQL中索引電子郵件地址的最有效方法是什麼?

需要索引來快速檢查表中是否存在電子郵件。允許重複。

此外,我們的目標是儘量減少索引的大小。目前在varchar字段上使用標準索引,但考慮創建二進制散列併爲前幾個字符編制索引。任何其他選項?

+3

電子郵件字段的唯一限制,如果插入失敗 - 電子郵件存在。 – 2012-04-19 08:01:37

+1

@ N.B .:這應該是一個答案:) – 2012-04-19 08:05:08

回答

2

使用Unique Index作爲電子郵件,如果你不想有任何重複的條目。
如果有任何重複的條目完成,它將不會插入任何新行並會給出錯誤。

+0

對不起,我應該澄清,重複是允許的。主要目標是儘量減少索引大小。 – 2012-04-19 08:06:48

+0

@Justanotherhacker我不清楚你的觀點,如果你允許重複的電子郵件,那麼你會通過檢查重複值來實現。 – 2012-04-19 08:15:57

+0

瞭解地址是否已保存很有價值。 – 2012-04-19 08:19:32

0

這取決於。試試並測試。請記住,在這個等式中有更多的讀取速度。如果此表大量更新並插入,則應該看到對插入的影響。

我懷疑(我可能在這裏完全錯誤)一個正常的b-tree索引將存儲在樹中的值,而散列索引將需要計算散列,然後存儲到樹中。這可能意味着散列索引使用更少的空間,但是會做更多工作來獲取索引更新或插入新值。

在我的腦海裏插入一個新值散列索引可能帶來類似

1)創建值散列鍵。

2)將散列插入到索引中。

如果一個正常的b-樹會是

1)插入值到索引。

無論如何,我的2美分的價值。

相關問題