有一驗證碼數(shù)據(jù)表,有200萬條數(shù)據(jù),驗證碼字段需要唯一需要往這個表里插入大批量的數(shù)據(jù),每次插入幾萬條左右數(shù)據(jù)如何優(yōu)化每次的執(zhí)行時間現(xiàn)在的做法:先生成好包含唯一驗證碼的數(shù)組。根據(jù)數(shù)組去驗證碼表里查,發(fā)現(xiàn)存在的 重新生成5000 一次 分批插入private function generateUniqueValidationCodes(int $number){ // 生成指定數(shù)量的不重復(fù)的驗證碼
$codeArr = $this->generateUniqueCodes($number); // 去表中查詢是否有存在的
$result = ValidationCode::query()->whereIn('validation_code', $codeArr)->get(); // 如果有存在的重新生成
if ($result->isNotEmpty()) { $this->generateUniqueValidationCodes($number);
} else { return $codeArr;
}
}
2 回答

交互式愛情
TA貢獻1712條經(jīng)驗 獲得超3個贊
代碼有小錯誤
$this->generateUniqueValidationCodes($number);
這里還得加上return
驗證碼字段需要唯一,好奇這個為什么要唯一?
唯一的話,你加上Unique Index好了
- 2 回答
- 0 關(guān)注
- 1338 瀏覽
添加回答
舉報
0/150
提交
取消