2014-12-21 39 views
0

我將電子郵件地址作爲varchar存儲在列中,我將根據後綴(域名)進行查詢以選擇電子郵件。因此,例如:MySQL - 字符串後綴索引

--------------- 
EMAIL 
--------------- 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

我希望能夠有效地選擇所有的電子郵件以「aol.com」的後綴,例如 - 有可能最終成爲數以百萬計的查詢相匹配的記錄。有沒有一種有效的方式來做到這一點,或者只是創建另一列並只存儲後綴並向該列添加索引會更好?

+0

你已經知道這個問題的答案:創建另一列並建立索引。 –

+0

我已經知道這是可行的解決方案,但是如果存在有效的解決方案,我寧願使用現有的列。 –

+1

mySql沒有爲這種搜索提供索引功能(儘管您可能嘗試使用FULLTEXT索引 - 我不知道它是否運行良好,以及它是否使用@和。作爲單詞分隔符)。分區也不適用於這種標準。最有效的方法是創建一個單獨的列。 – Chris

回答

1

MySQL允許索引前綴字符串,它是固定長度的。這對你並不是很有幫助,但它有點緊密。

您也可以嘗試在列上進行全文搜索。你想確保@而不是考慮了一個單詞字符(因此它是一個分隔符),並且可能該.被視爲一個單詞字符。如果你這樣做,你可以在域上使用match against

但是,它可能是最容易添加新列並指定值和指標:

alter table t add column domain varchar(255); 

update t 
    set domain = substring_index(email, '@', -1); 

create index idx_t_domain on t(domain);