php: самый быстрый способ сгенерировать 5-значное число, которого нет в колонке базы данных MySQL (с уникальным атрибутом) - PullRequest
2 голосов
/ 05 декабря 2011

Предположим, что Table1 содержит столбец orderid (не ключ, хотя он не равен NULL и уникален).Он содержит 5-значные числа.Какой лучший способ создать php var $ unique_var, которого нет в этом столбце.Что может быть важно, от 10% до 30% 5-значных чисел находятся в таблице (поэтому создание числа и проверка while (mysql_num_rows() ==0) {} не лучший способ найти его, есть ли лучшее решение для повышения производительности?).

Спасибо.

Ответы [ 3 ]

7 голосов
/ 05 декабря 2011

Если есть только 10-30% от числа уже занятых - это означает, что только 10-30% запросов будет выполнено как минимум дважды.Что не является большой проблемой для производительности.

В противном случае - просто создайте таблицу со списком из 5 цифр и цифрами (всего 100 тыс. Строк) и удалите все, что существует.Когда вам нужно другое случайное число - просто выберите одно и удалите.

3 голосов
/ 05 декабря 2011

Вот несколько предложений. У каждого есть свои недостатки.

  1. Предварительно заполните таблицу и добавьте столбец, чтобы указать, что число не используется. Выберите неиспользуемый номер с помощью LIMIT = 1 и отметьте его как использованный. Это занимает много места.
  2. Храните отдельную таблицу, содержащую ранее использованные числа Если эта таблица пуста, генерируйте числа последовательно из последнего использованного номера (или из 00001, если Таблица1 пуста). Это требует дополнительной бухгалтерии.
3 голосов
/ 05 декабря 2011

Я бы предложил найти наибольшее число (с предложением MAX ()) и начать с него.

...