Sql 删除重复的字符串值

Sql 删除重复的字符串值,sql,Sql,给定一个非键varchar列,其中字符串值可能会在许多其他行中重复,单独的表将唯一字符串从该列映射到整数是否是一种有益的做法?这显然会消除存储空间,但将第一个表连接到此映射表所损失的性能值得吗?一般来说,整数比较会更快,因为在最低级别,机器单独执行这些操作,而不是字符串中的每个字符 然而,如果不知道比较发生的频率,转换是否是一个好主意是一个困难的问题 就个人而言,我认为转换可能经常发生(比如在连接中查找键),然后我会将它们变成整数 索引同样的事情,也因为索引更小(空间效率),你删除了一些后备存储

给定一个非键varchar列,其中字符串值可能会在许多其他行中重复,单独的表将唯一字符串从该列映射到整数是否是一种有益的做法?这显然会消除存储空间,但将第一个表连接到此映射表所损失的性能值得吗?

一般来说,整数比较会更快,因为在最低级别,机器单独执行这些操作,而不是字符串中的每个字符

然而,如果不知道比较发生的频率,转换是否是一个好主意是一个困难的问题

就个人而言,我认为转换可能经常发生(比如在连接中查找键),然后我会将它们变成整数


索引同样的事情,也因为索引更小(空间效率),你删除了一些后备存储延迟-再一次,这是理论-但实际上可能还有很多其他因素需要考虑。p> 通常被称为查找表,如果值经常重复,并且字符串足够丰富,则肯定值得添加,即:2个字符的

状态
代码不值得麻烦

整数比较比字符串比较快,但这通常更多地是为了节省空间而不是性能,因为您已经将字符串放入行中,因此将重复值分离到查找表中会添加额外的
联接。这是迈向规范化的一步,但也存在过度规范化的问题,在我看来,是否应该依赖于数据的样子和使用方式