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