我需要检查数据库中是否存在值
我有一个表,每个用户都有一个唯一的代码。例如: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;
}
}
}
要么
$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%准确,我只是为了解释问题的目的编写了此代码。)
最佳答案
我想说一次查询数据库(可能要超过2000次)的效果明显更好。第二个脚本将明显更快。
在第一个代码中,LIMIT 1会产生奇迹,但是与第二个查询相比,就基准而言,它显得苍白。
将以下内容放在脚本的底部,以进行微调和基准测试:
PHP 5.4以上$sParseTime = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
echo $sParseTime;