当联接表之间存在可变范围不匹配时,例如一个表中的id是varchar(10),而另一表中的id是外键,则JOIN可以使用索引吗?我知道如果类型不同,这是行不通的,但是不确定范围不同的情况是否相同。
另外,如果使用ZEROFILL,则INT类型(例如INT(10)或INT(11))上的范围不会真正影响除格式化之外的任何内容。上述两个INT的存储容量相同。但是,就像我的第一个问题一样,当联接的表之间的INT类型存在范围不匹配时,JOIN可以使用索引吗?
最佳答案
是的,该索引应该在varchar字段的大小不同的地方工作。
在这种情况下,由于子表中的字段较大,因此外键不会有任何问题。否则,如果外键值大于子表中允许的varchar字段,则可能会出错。
关于mysql - 连接具有不同变量大小的ID的表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25728057/