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类型影响效率。

  • 相关阅读:
    CSS中文API
    廖雪峰Git教程
    数据操作的几个名词即model、dal、dao、orm和ar 解释
    Jetty
    Git介绍与使用
    c3p0、dbcp、druid三大连接池对比
    (转)JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)
    08 bash特性--shell脚本编程入门
    07 grep命令与正则表达式
    06 I/O重定向与管道符
  • 原文地址:https://www.cnblogs.com/mistwalker/p/7421197.html
Copyright © 2011-2022 走看看