我的表中有一个email列,它是一个VARCHAR(255)。大多数电子邮件的长度只有40-50个字符,其余的字符在那里只是为了应对罕见的情况。因此,我只想为电子邮件列的前50个字符建立索引。
我试着用下面的查询来实现:
ALTER TABLE `users` ADD INDEX (email(50) )但是,这会创建两个索引,一个名为email,另一个名为email_2。第一个索引没有长度限制,第二个索引有50个字符限制。
为什么会这样呢?有什么变通办法吗?还是我别无选择,只能为整个列建立索引?
发布于 2011-05-25 03:04:02
为什么只对前50个字符进行索引呢?MySQL将足够智能,只使用索引中的空间来存储实际数据。也就是说,它不会为每个条目分配255个字符的空间。因此,没有理由不简单地对整个列进行索引。
https://stackoverflow.com/questions/6115440
复制相似问题