我正在爲UN/LOCODE系統製作代碼生成腳本,並且數據庫在每個國家都有唯一的3個字母/數字代碼。例如,數據庫包含「EE TLL」,EE是國家(愛沙尼亞),TLL是愛沙尼亞境內的唯一代碼,「AR TLL」也可以存在(國家代碼和3字母/數字代碼分開存儲)。代碼是大寫字母。生成獨特的3位字母/數字代碼並與PHP/MySQL中的現有代碼進行比較
該數據庫相當大,已經包含了大量的位置,用戶還可以輸入3個字母/數字(在數據庫自動提交之前檢查)。
最後既不可以使用0或1(可能與O和I混淆)。
我正在尋找的是在未提供任何代碼時選擇下一個可用代碼的最有效方式。
什麼我趕上了:
我會檢查與AAA至999,但隨後在各碼,將需要一個新的查詢(慢?)。
我可以將所有40000個可能性存儲在一個數組中,並減去已經存在於數據庫中的所有已使用的代碼......但是使用了太多的內存IMO(不確定我在這裏實際上在說什麼,也許40000不是這麼大的數字)。
生成一個隨機代碼,並希望它不存在,看看它是否確實,如果它重新開始。這只是冒險。
是否有一些神奇的MySQL查詢/ PHP腳本,可以讓我下一個可用的代碼?
代碼是按順序分配(AAA,AAB等)還是用戶可以輸入任意未使用的代碼? – PatrikAkerstrand 2009-09-20 17:41:08