ip地址库,432353条数据,“ipstart,ipend,region,address”四个字段,大小:21.6 MB我试着将region字段变成RID数字字段,把region的数据存在另外一个表中,这个表只占用了105.9 KB的空间,然而原表还是有17.8 MB,这样就是说节约了不到4MB而已请问是分表储存好 还是不分?!有多大的差别呢?!

解决方案 »

  1.   

    第二个表就是把第一个表中的“region”字段保存在这个表中,并将RID保存为这个表对应的索引值。
      

  2.   

    21M并不算大表。 分不发关键是你的表中记录的关系, 如果你的REGION的名字会变,则应该把REGION单独做为一个实体来看,有专门的表(RID,REGIONNAME) 这样,如果名称有变,你只需要更改这个REGIONNAME就行了。  如果这个REGION并不会变,也没什么与其它表记录的联系,则可以按你原表进行存储。
    建议详细说明你的数据样例,这样比较容易分析。
      

  3.   

    你这种情况,一个region对应很多ip地址段的吧,当然是分表做不但查询快,还解决了数据冗余问题。
      

  4.   

    ipstart, ipend, region, address
    20447232, 20512767, '黑龙江省', '联通'
    20512768, 20537855, '黑龙江省齐齐哈尔市', '联通'
    20537856, 20538111, '黑龙江省齐齐哈尔市讷河市', '联通'
    20538112, 20578303, '黑龙江省齐齐哈尔市', '联通'
    20578304, 20643839, '黑龙江省哈尔滨市', '联通'
    20643840, 20665599, '黑龙江省', '联通'
    20665600, 20665855, '黑龙江省大庆市肇源县', '联通'
    20665856, 20747775, '黑龙江省', '联通'
    20747776, 20750079, '黑龙江省伊春市', '联通'
    20750080, 20750335, '黑龙江省', '联通'
    20750336, 20750591, '黑龙江省哈尔滨市', '联通'
    20750592, 20761855, '黑龙江省', '联通'
    20761856, 20762111, '黑龙江省齐齐哈尔市', '联通'数据基本是不变的!
      

  5.   

    如果是#7楼这样,因为省市很少变动。 如果这个省市REGION与其它表没有任何关系。则建议就用这一张表就行了。占地会大一点,但查询的时候减少了JOIN所需要的开销。
      

  6.   

    长度不算长,用1个表即可,如果分表,可以
    regionid region
    1       黑龙江
    2       黑龙江省齐齐哈尔市
      

  7.   

    分不分表,这样看你实际的需求。
    数据比较固定的话,用MYISAM存储引擎比较好。
    估计你要对ipstart和ipend进行范围查询。这个用GEOMETRY会比较好。
      

  8.   

    不管表中记录的多少。如果region与其它表无关,则不要分表。 即然不考虑更新,那不如就利用目前的方法,至少你可以节约查询的时间。