增加现有表的列长度的影响

时间:2009-08-07 04:44:26

标签: database oracle performance

现有表中列的数据类型是Char(4)类型。现在,如果我将列长度增加到10,那么在选择该行时是否有任何影响。

4 个答案:

答案 0 :(得分:1)

我相信当你增加一个char字段时,会添加额外的空格来填充那些尚未填充的空格,如果不是全部,则添加一些空格。

这可能会影响某些不期望此行为的程序,如果没有修剪额外的空格,可能会导致一些输出问题。

我认为类似子串的函数(以及那些依赖于字符串长度的函数)也可能会受到影响,因为字符串的长度现在已经改变了。

答案 1 :(得分:0)

为什么不是varchar2(10)?你真的在每个记录中使用整个字符串吗?

答案 2 :(得分:0)

在真空中,对列扩展VARCHAR2数据类型应该没有实际影响。

与使用空白填充右边的CHAR不同,较大的VARCHAR2大小不会显着改变任何现有记录。

然而,正如其他人所提到的那样,我们无法预测的是你在数据库之上的任何层中会发生什么,这可能依赖于特定大小的列,但我相信你能比我们更好地回答这个问题。

但要小心,将VARCHAR2列再次缩小并不容易。即使您的数据在新限制范围内,Oracle也会坚持将列清空。最好的办法是导出行并重建表或重排列(创建新列,迁移值,删除旧列)。

答案 3 :(得分:0)

“选择该行时”

在这些情况下,您可能遭受的唯一影响是意外截断。我记得曾经向我公司的DB2专家询问指标值“-2”的含义。他不知道。

但是,如果您在任何涉及“LENGTH(yourcolumnname)”的地方有任何查询,并且事实证明您的代码依赖于LENGTH()调用永远不会返回某些内容> 4,当然你遇到了麻烦。

相关问题