高效地检查数据库中是否存在值

iugsix8n  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(383)

我想生成唯一的值并保存在数据库中。

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

我有两个选项(伪代码):
1)

$allValues = 'SELECT unique_number FROM table'; //EXAMPLE!

$number = generateRandomString();

while(in_array(number, $allValues)) {
    $number = generateRandomString();
}
function getUniqueNumber($uniqueNumber) {
    return 'SELECT unique_number FROM table WHERE unique_number = ' . $uniqueNumber; //EXAMPLE!
}

$number = generateRandomString();

while(getUniqueNumber($unique)) {
    $number = generateRandomString();
}

但如果我有超过100000条记录,这两种方法都是低效的。
检查数据库中是否存在值并在存在值时生成新值的更好方法是什么?
我也可以用教条来解释。

xoefb8l8

xoefb8l81#

如果您需要该表中的唯一值,最简单的方法是在该表中插入一个自动递增字段,因此每次插入时,数据库都会为您创建以下字段:

ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY

然后您可以使用 mysql_insert_id() 或者 PDO::lastInsertId

相关问题