Tốt hơn hết bạn nên lưu trữ một bảng với tất cả 10.000 giá trị có thể được xác định và cờ "đang sử dụng" trên mỗi bảng. Theo cách đó, việc giải phóng số để sử dụng lại là một cập nhật đơn giản để đặt "inuse =false".
Cũng làm cho việc tìm kiếm giá trị thấp nhất có sẵn trở nên đơn giản
SELECT idstring
FROM idstringtable
ORDER BY idstring ASC
WHERE (available = 1)
LIMIT 1
Làm điều đó với các khóa / giao dịch thích hợp sẽ ngăn hai hoặc nhiều yêu cầu nhận được cùng một ID và vì đó là một bảng nhỏ nên việc thực hiện khóa bảng toàn cục sẽ không ảnh hưởng đáng kể đến hiệu suất.
Nếu không, bạn sẽ gặp khó khăn khi lục tung bảng người dùng của mình, cố gắng tìm "khoảng trống" đầu tiên trong trình tự đánh số.