在Varchar上创建MySQL索引总是会产生2个索引?

Cli*_*ote 9 mysql database indexing optimization database-design

我的email表中有一列是一个VARCHAR(255).大多数电子邮件只有40到50个字符长,其余的字符就是那里罕见的情况.因此,我只想索引电子邮件列的前50个字符.

我试过这个查询:

ALTER TABLE  `users` ADD INDEX (email(50) )
Run Code Online (Sandbox Code Playgroud)

然而,创建2个索引,一个命名email和其他email_2.第一个索引没有长度限制,第二个索引有50个字符限制.

为什么是这样?是否有任何解决方法或我没有选择,只能索引整列?

Tho*_*mas 11

为什么只打算索引前50个字符呢?MySQL将足够智能,只能在索引中使用实际数据的空间.即,它不会为每个条目分配255个字符的空间.因此,没有理由不直接索引整个列.