左边是一个表  1300万条数据 其中有一个手机号码字段
右边是一个表  10万数据 是手机号段与号段地区的表我现在想来一个子查询  把手机号码  按照号段分类  然后插入到另外一个表   从而统计出这些手机号码是哪个地区的1300万数据 和 10万数据的两张表做子查询 你们做过吗  谁有良方?分不多了  就给帮个忙吧。。

解决方案 »

  1.   

    select a.*, b.地区 from 左边 a join 右边 on a.手机号码 like b.手机号段 + '%'
      

  2.   

    嗯  我也是像你上面写的那样1300万  你可能没试过   count一遍都要1分钟20秒可能是我机器的问题  闪龙2800+  1G内存
      

  3.   

    可以考虑适当的冗余,在手机号码表加个地区字段,一次性UPDATE。
    以后加记录顺便把地区也一起放进去。
      

  4.   

    嗯  对了 如果是update的话 要怎么写sql语句了。。
      

  5.   


    insert into tb_pns_analyse
    (phone,msghc,phonesegment,province,city,area)
    select pns.phone,pns.msghc,segment.phone,segment.province,segment.city,segment.area
    from tb_pns_logs as pns,phones.dbo.tb_phone as segment
    where charindex(segment.phone,pns.phone,0) > 0
    我以前这样写的 呵呵  
      

  6.   


    只为统计根本就不用a.*用count(a.手机号码)就够了,这样可以快不少啊
      

  7.   

    数据量大的话楼主是否考虑用下索引呢?
    楼主不妨参考下
    http://blog.csdn.net/foxflyhigher/archive/2008/03/05/2148428.aspx
      

  8.   

    update 左边 set a.地区=b.地区 from  左边 a join 右边 b on a.手机号码 like b.手机号段 + '%'
      

  9.   

    估计索引找就建过了
    更新统计值
    或是做DBCC 等更为有效
      

  10.   

    增加硬件设备,8g内存(增加缓存)+2*4核cpu(增加运算速度)+3块硬盘做RAD5(增加硬盘读写速度)
      

  11.   

    楼上的够强。。呵呵 我慢慢做吧   1300万 和 10万  两个表都建好索引了不过left jion一下  还是很慢的好像没有很好的解决方法  散分了。。