鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 数据库 > SQLite > >

lvarchar类型对表结构变更影响

来源:互联网 作者:佚名 时间:2017-09-09 08:18
informix中lvarchar类型设计用于存储中度长度的字符数据(短的常用varchar类型、特别长的字符可用text类型)。其默认长度2048byte,最大长度32739byte,是一种可变长度的字符类型。其性能和稳定性相对较好,但有一缺点: 一旦表结构中包含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类型影响效率。

网友评论
<