代码之家  ›  专栏  ›  技术社区  ›  malaria

优化大型数据库循环

  •  0
  • malaria  · 技术社区  · 5 年前

    我必须从一个包含大约1000万用户的数据库的csv文件中找到大约1500个用户的匹配项。我现在的方法是在文件中循环并对每一行执行一个查询。但是对于这么多的用户来说,它已经超过了时间限制并崩溃了。我不允许以任何方式更改数据库表,只能更改我的代码。

    //connect to db
    //using locator
    
    //loop through csv file and build an array
    
    for ($i = 1; $i < $arraycount; $i++) {
        $email = $csvAsArray[$i][3] ?: "";
        $email2 = $csvAsArray[$i][4] ?: "";
        $myquery = "SELECT id, firstname, lastname FROM user WHERE user_email = :email OR user_email2 = :email2";
        $params = array(':email' => $email,':email2' => $email2);
        $stmt = $db->prepare($myquery);
        $stmt->execute($params);
    
        if (!$result = $stmt->fetchAll()) {
           //no match
        }
        else{
          // match
        }
    }
    

    0 回复  |  直到 5 年前