lvarchar类型对表结构变更影响

informix中lvarchar类型设计用于存储中度长度的字符数据(短的常用varchar类型、特别长的字符可用text类型)。其默认长度2048byte,最大长度32739byte,是一种可变长度的字符类型。其性能和稳定性相对较好,但有一缺点:一旦表结构中包含lvarchar类型,则后续对其结构的变更性能将异常的低。故对于数据量较大的表(千万级以上)不推荐使用此类型!

例子

  • informix版本:11.5
  • 表数据量:4700W

    表中原包含两个lvarchar类型字段:

create table lp_evaluation_part (
    ......
    esti_remark lvarchar(2000),
    appr_remark lvarchar(2000),
    ......
);
 更改表结构的sql:
alter table lp_evaluation_part add  retail_Price DECIMAL(14,2),
add supply_Price DECIMAL(14,2),
add eval_Push_No INT default 0,
add appr_Push_No INT default 0;

此sql执行时耗整体耗时:123分钟,后为测试验证将两个lvarchar类型的字段删除后重新执行此sql耗时:7秒。

解决方式

数据量大的表应尽量避免使用lvarchar类型,若因业务实际情况必须使用,则尽量将其拆分出一张字表。此字表存一些非核心的数据及lvarchar类型数据。这样主表结构变更时不会因为lvarchar类型影响效率。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值