(относится к Нахождение наименьшего неиспользуемого уникального идентификатора в списке и Получение неиспользуемых уникальных значений в таблице SQL )
ПредположимУ меня есть таблица, содержащая столбец id и некоторые другие (здесь они не имеют никакого значения):
+-----+-----+
| id |other|
+-----+-----+
Идентификатор имеет числовое возрастающее значение.Моя цель - получить самый низкий неиспользуемый идентификатор и создать эту строку.Поэтому, конечно, при первом запуске он вернет 0
, и строка этого ряда будет создана.После нескольких выполнений это будет выглядеть так:
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 3 | ... |
| 4 | ... |
+-----+-----+
Довольно часто некоторые из этих строк могут быть удалены.Давайте предположим, что строки с идентификаторами 1
и 3
удалены.Нет, таблица будет выглядеть следующим образом:
+-----+-----+
| id |other|
+-----+-----+
| 0 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
Если я сейчас снова выполню запрос, он хотел бы получить идентификатор 1
, и должна быть создана эта строка:
| id |other|
+-----+-----+
| 0 | ... |
| 1 | ... |
| 2 | ... |
| 4 | ... |
+-----+-----+
В следующий раз, когда запрос выполняется, он должен вернуть идентификаторы 3
, 5
, 6
и т. Д.
Какой самый эффективный способ выполнить запрос такого типа, так как мне нужно выполнить его честночасто в секунду (справедливо предположить, что идентификаторы являются единственной целью таблицы)?Можно ли получить следующую неиспользованную строку одним запросом?Или это проще и быстрее, если ввести другую таблицу, которая отслеживает неиспользуемые идентификаторы?
Если это значительно быстрее, можно также получить способ повторно использовать любую дыру в таблице при условии, что все числа будут повторно использованыв какое-то время.
Дополнительный вопрос: я планирую использовать SQLite для такого рода хранения информации, поскольку мне не нужна база данных, кроме как для хранения этих идентификаторов.Есть ли другой свободный (как в речи) сервер, который может сделать эту работу значительно быстрее?