给定一个非键varchar列,其中字符串值可能在许多其他行中重复,是一个单独的表,将列中的唯一字符串映射到整数是一种有益的做法吗?这显然会消除存储空间,但是将第一个表加入到这个映射表中会失去性能吗?
答案 0 :(得分:0)
一般来说,整数比较会更快,因为在最低级别,机器单独执行这些操作,而不是字符串中的每个字符。
然而,在不知道比较发生的频率的情况下,转换是否是一个好主意是一个难题。
就我个人而言,转换可能经常发生(例如在连接中查找关键字)然后我会使它们成为整数。
同样的事情适用于索引,并且因为索引较小(空间效率),您删除了一些后备存储延迟 - 这也是理论 - 但实际上可能还有许多其他因素需要考虑。
答案 1 :(得分:0)
通常称为Lookup表,如果值经常重复,并且字符串足够大,即:2个字符State
代码不值得麻烦,那么绝对值得添加。
整数比较比字符串比较更快,但这通常更多地是关于节省空间而不是性能,因为你已经将字符串插入行中,因此将重复值分成查找表会增加额外的{{1} }。这是向标准化迈出的一步,但在我看来,过度标准化是否应该取决于您的数据是什么样的,以及它是如何使用的。