我需要检查数据库中是否存在某个值
我有一个表,其中每个用户都有一个唯一的代码。例如:5 点 27 分。
这些价值和用户的积累速度非常快。所以很快我可能就会有超过 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;
关于php - 性能,检查值是否存在数组或查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067138/