1。贴上index啊
2。填充因子一样?
3。一张表经常用的?执行操作的时候是不是有并发用户?
4。数据库日至是否在作第二个表的时候满了?而且日至开得很大?
......

解决方案 »

  1.   

    很有可能是2张表中ipnum分布不一样啊,也就是符合条件的记录数不同.你可以看看执行计划
      

  2.   

    两张表的索引都是ipnum ,聚集索引,没有设置其他的填充因子什么的了,所有的记录都应该在ipaddress 找得到匹配的
      

  3.   

    update log_cnc_exportip_0517 set country = tb_ipaddress.country from tb_ipaddress where log_cnc_exportip_0517.ipnum between tb_ipaddress.ip1 and tb_ipaddress.ip2这里的log_cnc_exportip_0517.ipnum匹配条件是between tb_ipaddress.ip1 and tb_ipaddress.ip2
    我觉得可能是这里的问题,log_cnc_exportip_0517表中的每条记录的ipnum的使用between tb_ipaddress.ip1 and tb_ipaddress.ip2的条件是不是在tb_ipaddress里面有不止一条记录?
    这样的话可能就对了。
      

  4.   

    tb_ipaddress 是什么索引?记录数怎么样?
      

  5.   

    tb_ipaddress是ip1和ip2的联合聚集索引,20w条记录更正一下 log_ct_exportip_0515 140w条记录, log_cnc_exportip_0517 147w条记录
      

  6.   

    我想知道
    你得到的执行时间是在程序中 算出的
    还是在sql算出的.
    就算是有差别也不会这么大~~
      

  7.   

    问题:
    1。log_cnc_exportip_0517中的每一条记录的ipnum 在tb_ipaddress只能找到1条满足between(ip1,ip2)的纪录吗?2。tb_ipaddress表中的字段很多或者每条记录的字节数较大?建议索引中增加country字段不是你的问题没人回答,你因为涉及性能调优,有很多细节需要了解的,比如第二条建议如果你做了,我想就马上会好些
      

  8.   

    suifix() ( ) update log_cnc_exportip_0517 set country = tb_ipaddress.country from tb_ipaddress where log_cnc_exportip_0517.ipnum between tb_ipaddress.ip1 and tb_ipaddress.ip2这里的log_cnc_exportip_0517.ipnum匹配条件是between tb_ipaddress.ip1 and tb_ipaddress.ip2
    我觉得可能是这里的问题,log_cnc_exportip_0517表中的每条记录的ipnum的使用between tb_ipaddress.ip1 and tb_ipaddress.ip2的条件是不是在tb_ipaddress里面有不止一条记录?
    这样的话可能就对了。
    ---------------------------------------------------------------
    同意.
      

  9.   

    suifix() ( ) 信誉:100    Blog   加为好友  2007-5-17 12:28:14  得分: 0  
     
     
       
    1。贴上index啊
    2。填充因子一样?
    3。一张表经常用的?执行操作的时候是不是有并发用户?
    4。数据库日至是否在作第二个表的时候满了?而且日至开得很大?
    ......填充因子这一观点很重要,填充因子越小,插入的速度就快,但查询速度就慢。  
    如,当填充因子的值为50%,那么数据库的读取性能会降低2倍。