我需要检查数据库中是否存在值
我有一个表,每个用户都有一个唯一的代码。例如:5h27f。
这些价值观和用户加起来很快。所以我很快就会拥有+2000个唯一代码。什么是检查某个值是否唯一的最佳,最快和最有效的方法?
foreach ($users as $user) {
$is_unique = FALSE;
while ($is_unique == FALSE) {
$code = unique_code();
$query = "SELECT * FROM unique_code_table WHERE code='$code';";
$res = $mysqli->query($query);
if ($res->num_rows > 0 {
} else {
$is_unique = TRUE;
}
}
}
OR
$query = "SELECT code FROM unique_code_table;";
$res = mysqli->query($query);
$codes = array();
$i = 0;
while ($row = $res->fetch_object()) {
$codes[$i] = $row->code;
$i++;
}
$code = unique_code();
while (in_array($code, $codes) {
$code = unique_code();
}
(此代码可能不是100%准确,我这样写只是为了解释问题的目的。)
答案 0 :(得分:2)
我说,一次查询数据库与可能的2000+相比,明显更好。第二个脚本会快得多。
在第一个代码上,LIMIT 1
会创造奇迹,但与第二个查询相比,就基准而言,它会变得苍白。
将以下内容放在脚本的底部以进行微调和基准测试: PHP 5.4 +
$sParseTime = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
echo $sParseTime;