swanrnd
@swanrnd
Издатель HTML5 игр

Как оптимизированно найти в SQL число удовлетворяющим условию?

Есть у меня диапазон id, в котором надо создать 1-10 записей.
2 010 000 000
-
2 010 999 990

Я хочу создать 5 записей, находится диапазон:
2 010 123 450 - 2 010 123 459 и создаются id:
2 010 123 450
2 010 123 451
2 010 123 452
2 010 123 453
2 010 123 454

Мне нужно как можно быстрее найти пустой диапазон, если его нет вывести ошибку.

SELECT TOP 20 (users.id+1) as empty_id
FROM sw.dbo.users
WHERE (
    SELECT 1 FROM users as st WHERE st.id = (users.id + 1)
) IS NULL
ORDER BY users.id;

Нашел такой код, который находит диапазон вообще пустых чисел. Но может есть более оптимизированный вариант.
  • Вопрос задан
  • 2335 просмотров
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Сама идея таким образом получать ID далека от "оптимальности" и "быстродействия" - при каждой такой операции придется блокировать таблицу на вставку и удаление.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы