我必须存储用户信用,该信用可以采用十进制格式(例如10.99、0.99等)。现在,我将列字段作为varchar(100)。
如果我使用小数而不是varchar怎么办。会改善性能吗?
简短的答案是:不,它将损害性能。
更长的答案:VARCHAR字段是可变长度的,这意味着数据库块的格式无法预先考虑其中填充的数据的大小。当然,该字段有最大长度,但除此之外,您的情况更糟。
另一方面,读取VARCHAR,然后将其解释为适合浮点类型的操作会花费您很多时间。并且它引入了新的问题可能性。尝试获取所有占“ 11.99”的小数。希望您带正确的小数位数,因为在VARCHAR中为“ 11.99”!=“ 11.990”。
然后是索引。通常,没有人为十进制字段建立索引,但是一旦您这样做,在VARCHAR字段上建立索引将需要更多空间。
总而言之,将某些内容保存在非特定的字段类型中并不是一个好主意。在数据库结构中,通常认为最佳实践是尽可能具体的。