PHP往Mysql里插入唯一随机字符串的效率问题?

  1. 有一验证码数据表,有200万条数据,验证码字段需要唯一

  2. 需要往这个表里插入大批量的数据,每次插入几万条左右数据

  3. 如何优化每次的执行时间

现在的做法:

  1. 先生成好包含唯一验证码的数组。

  2. 根据数组去验证码表里查,发现存在的 重新生成

  3. 5000 一次 分批插入

private function generateUniqueValidationCodes(int $number){    // 生成指定数量的不重复的验证码
    $codeArr = $this->generateUniqueCodes($number);    // 去表中查询是否有存在的
    $result = ValidationCode::query()->whereIn('validation_code', $codeArr)->get();    // 如果有存在的重新生成
    if ($result->isNotEmpty()) {        $this->generateUniqueValidationCodes($number);
    } else {        return $codeArr;
    }
}


陪伴而非守候
浏览 1211回答 2
2回答

交互式爱情

代码有小错误$this->generateUniqueValidationCodes($number);这里还得加上return验证码字段需要唯一,好奇这个为什么要唯一?唯一的话,你加上Unique Index好了
打开App,查看更多内容
随时随地看视频慕课网APP