我的表中有一个 email
列,它是一个 VARCHAR(255)
。大多数电子邮件只有 40-50 个字符长,其余字符只是在极少数情况下存在。因此,我只想索引电子邮件列的前 50 个字符。
我已经尝试用这个查询来做到这一点:
ALTER TABLE `users` ADD INDEX (email(50) )
但是,这会创建 2 个索引,一个名为 email
,另一个名为 email_2
。第一个索引没有长度限制,第二个索引有 50 个字符的限制。
这是为什么?是否有任何解决方法,或者我别无选择,只能索引整个列?
最佳答案
为什么只索引前 50 个字符? MySQL 将足够聪明,只将索引中的空间用于实际数据。也就是说,它不会为每个条目分配 255 个字符的空间。因此,没有理由不按原样简单地索引整个列。
关于mysql - 在 Varchar 上创建 MySQL 索引总是会产生 2 个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115440/