Задать вопрос
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;

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

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

Похожие вопросы