在一张表上的全部列上加了一个多列索引,里面数据量大概800W,索引文件为什么比数据文件大。。:
12K     BHV_U.frm
420M    BHV_U.MYD
581M    BHV_U.MYI
我觉得数据文件肯定比索引文件大的吧,为什么会出现上面这个情况。

解决方案 »

  1.   

    表什么引擎,索引是怎么建立的,字段是什么
    SHOW INDEX FROM tbl_name 
    应该是索引列过多
      

  2.   

    就1个索引,覆盖了所有的字段,MYISAM存储引擎的表,
    索引再多,文件应该也没有数据文件大吧。。
      

  3.   

    如果你创建了多个索引 则自然MYI文件会大!比如create table t (id int, c1 int, c2 int)如果你创建了索引pirmary key (id)
    index (c1)
    index (c2)
    index (c1,c2)则很显然这个MYI文件一定会大于MYD。
      

  4.   

    很正常啊,
    曾经搞了一个系统,当初也没想到他们数据量会这么大,业务变化也快。为了赶工期,不停地往里面加字段,同时加了索引,结果索引是数据的3倍。拆了表重建成几张表,就好多了。另外,你说“就1个索引,覆盖了所有的字段”
    正因为如此,必然是索引大。数据文件,基本上可以想象成每条数据一行(逻辑上的行,不是物理),每行里面就是N个字段。每行有个行号(比如,数据偏移量),这个行号本身并不在数据文件中存储。
    而索引,除了要放N个字段作为key以外,还要存这个行号作为节点的value,存在索引文件中。
      

  5.   

    索引占用大小在information.table中有至于计算并不是非常好计算,因为有索引填充因子概念,所以索引快空闲空间不固定