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