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