连接上的外键类型

Foreign Key Types on Joins

我读到在 FK 上连接表时,执行连接的列的数据类型会影响性能。例如,在 int 上加入比在 varchar(128) 上加入更快 我的问题是,这是一个正确的陈述,因为根据数据类型或该数据类型中的值,加入字段更快吗?

例如,如果我对值 -2,147,483,648 进行联接,是否比对值 "J" 进行联接更快,因为 "J" 在 space 中占用更多假设 "J" 来自 varchar(128) 字段?如果值 1 和 -2,147,483,648 都来自整数列,则它们的连接速度是否与它们相同?

影响相等比较(不涉及类型转换或类型转换)性能的主要因素是数据类型的大小。 SQL 服务器中的整数类型具有固定大小([=10= 为 4 个字节,bigint 为 8 个字节,等等 - 请参阅 the documentation for the full details), so the actual data is inconsequential. Varchars, on the other hand (and as opposed to chars), vary in their size depending on the size of the data (see the docs 了解详细信息),因此有较短的数据确实可能会影响查询的性能,但您必须拥有相当多的行才能注意到任何差异。