zoukankan      html  css  js  c++  java
  • 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类型影响效率。

  • 相关阅读:
    数据库连接单例模式
    魔术方法
    序列化与反序列化
    设计模式
    类的自动加载
    错误处理
    匿名类--php7.0以上
    OpenCV中HSV颜色模型及颜色分量范围
    Opencv 轮廓提取
    opencv 二值化_OpenCV二值图像案例分析精选 | 第二期
  • 原文地址:https://www.cnblogs.com/mistwalker/p/7421197.html
Copyright © 2011-2022 走看看