在這個情景中,我有一些經理(約150人)。他們的日常工作之一是生成50(恆定)的授權碼(6-8位數字),這些碼以其Id存儲在db中。如果使用任何授權代碼,該代碼被標記爲已使用,並且觸發器在它們已滿15天並且已被使用時將其刪除。如何生成6-8位數字的隨機數字,而不會與時間關鍵時尚的先前生成的數字相沖突?
在我的表中,我設置了授權碼作爲唯一鍵。我生成一個隨機數,然後查詢數據庫,如果它存在我生成另一個或我保存它。
除了我的邏輯檢查數據庫的存在的每一件事情都很好。這種往返+檢查導致顯着的延遲,因爲現在有超過1090083個待處理授權代碼。由於這些授權代碼處於流通狀態,因此我們無法撤銷它,並且在當前的負載情況下,需要花些時間來查找新的數字。
我需要在一個不同的邏輯中執行它,執行速度應該是低使用的隨機數的方式。
我的表設計如下
slno(AUTH增量)|| auth_code(隨機碼)|| auth_by(由創建)||使用 (1 =已使用/ 0 =未使用)
不要使用C#生成它,而是在數據庫中生成它。這是更高效和更安全。 –
有內置的類,但追逐在那裏得到重複的數字。你將不得不保留舊的價值觀並從你自己那裏檢查。 –
出於好奇,他們爲什麼要隨機?他們爲什麼不能順序?他們會是獨一無二的,更容易計算?然後根據需要簡單翻轉。 – Belogix