更改Oracle DB中字段的数据类型会损害性能

时间:2014-05-22 10:30:05

标签: oracle

我需要将Numeric(3)字段更改为Varchar2(3)字段,java程序与DB通信,我们希望区分01和1,这是更改的原因。我们担心这可能会影响Oracle的索引和性能。我不是Oracle DBA,所以我对性能相关领域没有什么知识。

先谢谢

1 个答案:

答案 0 :(得分:1)

Number(3)占用3个字节,Varchar2(3)占用3个字节,因此记录将保留在相同的块中,因此:

如果您的列未编入索引,那么索引就可以了。如果列已编入索引,则无论如何都应重新创建索引。

为了最大程度地减少离线时间,您可以使用CTAS / rename aproach:

create table new_table as select ... from old_table

在new_table上构建您需要的任何索引 然后 将new_table重命名为old_table

依赖视图/过程将被重建并重新加载到共享池。

如果您的桌子需要10亿,那么现在是时候了DBA :)。