连接ints vs连接chars(或varchars)

Aar*_* Fi 6 sql join

SQL中加入char(或varchar)值的表是否有任何性能缺陷,而不是加入整数值?

Mar*_*ett 2

存在与连接列的大小相关的性能考虑因素。整数的宽度为 4 字节 - 因此任何大于 4 字节的 char 值都需要更多的磁盘 I/O、缓存空间等。显然,char(5) 不会产生太大影响,但 char(4000) 会非常浪费。如果使用 unicode 类型,则将字符大小加倍。

通常这个问题是在自然键与代理键的上下文中出现的。在该争论中,数据类型的大小并不是唯一的因素 - 因为您通常可以避免使用自然(char)键进行连接。

当然,两者都不太可能成为应用程序中的瓶颈 - 因此设计时可以不受惩罚(至少在这一领域)。