MySQL - 字符串后缀的索引

时间:2014-12-21 19:03:05

标签: mysql sql indexing

我将电子邮件地址存储在varchar列中,我将根据后缀(域名)进行查询以选择电子邮件。例如:

---------------
EMAIL 
---------------
test@gmail.com
hello@aol.com
hi@yahoo.com
tester@aol.com

我希望能够有效地选择所有带有“aol.com”后缀的电子邮件 - 并且最终可能有数百万条记录与查询匹配。有没有一种有效的方法可以做到这一点,或者只是创建另一个列并仅存储后缀并为该列添加索引会更好吗?

1 个答案:

答案 0 :(得分: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);