本帖最后由 BBKBBJ 于 2010-04-24 23:01:45 编辑

解决方案 »

  1.   

    CREATE TABLE `worldip` (
      `start` int(10) unsigned NOT NULL DEFAULT '0',
      `end` int(10) unsigned NOT NULL DEFAULT '0',
      `code` varchar(2) NOT NULL DEFAULT '',
      PRIMARY KEY (`start`,`end`)
    ) ENGINE=MyISAM DEFAULT CHARSET=gbkCREATE TABLE `proxy` (
      `ip` int(10) unsigned NOT NULL DEFAULT '0',
      `port` int(11) NOT NULL,
      `type` varchar(6) DEFAULT NULL,
      `level` int(11) DEFAULT NULL,
      `code` char(2) DEFAULT NULL,
      `date` char(19) NOT NULL,
      `ping` int(11) DEFAULT '60000',
      PRIMARY KEY (`ip`)
    ) ENGINE=MyISAM DEFAULT CHARSET=gbk
      

  2.   

    $time = time();
    $query = "select count(*) from proxy";
    $result = mysql_query($query);
    $num = mysql_result($result,0);

    $len_step = 200;

    $test = $num;

    echo "记录条数:".$test."/".$num."<br/>";
    $num = $test;

    for($i=0; $i<$num; $i+=$len_step)
    {

    /*$query = "
    select inet_ntoa(proxy.ip),proxy.port,proxy.type,proxy.level,proxy.code,proxy.date,chunzhenip.location,proxy.ping from proxy,chunzhenip
    where proxy.id>".$i." and proxy.ip > chunzhenip.start and proxy.ip < chunzhenip.end limit ".$len_step;*/

    $query = "select inet_ntoa(proxy.ip),proxy.port,proxy.type,proxy.level,proxy.code,proxy.date,a.location,proxy.ping from (select chunzhenip.location,proxy.id from chunzhenip inner join proxy where proxy.id>".$i." and proxy.ip>chunzhenip.start and proxy.ip<chunzhenip.end limit ".$len_step.") as a inner join proxy on proxy.id=a.id";


    $result = mysql_query($query);
    //echo $query."<br/>"; //echo $i."<br/>";
    //printResult($result);
    //break;
    }
    echo "用时:".(time()-$time)."秒<br/>";比原来的语句快了4秒记录条数:3056/3056
    用时:3秒
      

  3.   

    还是不对,将proxy主键自增id从1开始排序的话,就超时。主要是proxy.id>???这里造成的。
    上面写的适用于id从3057开始的情况。