我们有两个表。第一个包含名称(varchar)字段。第二个包含一个字段,该字段引用第一个表中的名称字段。对于与该名称关联的每一行,将重复第二个表中的此外键。通常不建议使用varchar / string字段作为两个表之间的联接吗?何时可以将字符串字段用作联接字段?
当然可以使用varchar作为键字段(或简单地将其连接)。它的主要问题取决于您通常在varchar字段中存储的内容。可变数据。严格来说,不建议更改关键字段。一个人的姓名,电话号码,甚至他们的SSN都可以更改。但是,即使有两个John Smiths,内部ID为3的员工也始终为ID 3。
其次,字符串比较取决于许多挑剔的细节,例如区域性,排序规则,空格翻译等,这些细节可以在没有明显原因的情况下中断连接。假设您对要加入的某个字符串使用制表符\ t。后来,您更改软件以将\ t替换为3个空格,以减少原始字符串中的字符转义符。现在,您已经破坏了所有需要将带有转义的制表符的字符串与外观相同但组成不同的字符串进行匹配的功能。
最后,即使给出两个完全相同的字符串,比较两个整数也比比较两个字符串有一点性能上的好处。整数比较实际上是恒定时间。根据字符串的长度,字符串比较充其量是线性的。