我有个一个数组  $Barcodes=array(zhangsan,lisi,wangwu,haoer,....);大概有1000个
然后我读取数据库里的数据,数据库读出出一条,然后和数组比较看是否相等
  while($ROW=mysql_fetch_array($cursor)){
         $ID=$ROW["ID"];
     foreach($Barcodes as $str) {
           if($ID==$str)
              做逻辑处理
       }
}
数据库中大概也有1000条,和数组中的1000条对比发现速度很慢,有啥思路能让1000条数据和1000条数对比更高效

解决方案 »

  1.   

    我很好奇的是$Barcodes=array(zhangsan,lisi,wangwu,haoer,....);这里的数据是怎么获取的?难道是手工填的?手工填的时候有特征吗?让你自己填1000个,你也会烦的,为什么不把数据进行分组?解决方案有2个
    // 修改sql查询(忘记了sql的最长是多长)
    $max = count($Barcodes);
    $i = 0;
    $per = 100;
    while($i * $per <= $max) {
    $IDS = "'" . implode("', '", array_slice($Barcodes, (++$i)*$per, $per)). "'";
    $sql = "select * from table where ID in ($IDS)";
    $cursor = mysql_query($sql);]
    while($ROW=mysql_fetch_array($cursor)){
    做逻辑处理
    }
    }// 找出所有内容然后进行交集处理
    $IDS = array();
    $data = array();
    while($ROW=mysql_fetch_array($cursor)){
    $IDS[] = $ROW["ID"];
    $data[$ROW["ID"]] = $ROW;
    }
    $hasIDS = array_intersect($IDS, $Barcodes);
    foreach($hasIDS as $ID) {
    $ROW = $data[$ID];
    做逻辑处理
    }