Я создал функцию для генерации уникального кода реферала для пользователя, когда он регистрируется, я хочу гарантировать уникальность, поэтому я проверяю, существует ли он, если он есть, тогда я вызываю функцию снова рекурсивно:
public function generateUniqueReferralCode()
{
$referral_code = str_random(8);
if(User::where('referral_code', $referral_code)->exists()) {
$referral_code = $this->generateUniqueReferralCode();
}
return $referral_code;
}
Мой вопрос: это вычислительно дорого?Можно ли сделать это более эффективным способом, поскольку он должен сканировать таблицу пользователей?Допустим, у нас 1 миллион пользователей, он проверит по 1 миллиону записей пользователей, если ключ уже существует.