172 похожих чатов

Всем привет, вопрос есть ) задача: есть таблица (ее структура не

важна по большому счету), в таблице в данных есть "дырки" от удаленных строк
то есть id записей могут быть 1, 2, 8, 9, 43 для примера

нужно найти начало и конец интервалов по 10млн записей (ну или просто конец интервала)

то есть интервал из 10млн начинается допустим с 1 записи , а заканчивается на записи с id 117000001 (но в этом интервале ровно 10млн реальных записей)

сейчас есть вот такое решение (непричесанное)

select * from
(select row_number() OVER (ORDER BY ID) as number ,id FROM table ) as t
where number%10000000=0

но может есть какой-то вариант еще лучше и быстрее ?
подобная точность не обязательна, погрешность ширины интервала допустима в 0,5млн записей, но число отсутствующих записей абсолютно не предсказуемо, может быть что все записи на месте

запрос готовится для выполнения на любой таблице, поэтому схема тут не важна ( за исключением того что есть автоинкрементный id в виде первичного ключа)

4 ответов

15 просмотров

select id-lag(id), id over (order by id) from table order by 1 limit 1 ?

Сергей-Кравчук Автор вопроса
Darafei Praliaskouski
select id-lag(id), id over (order by id) from tabl...

благодарю за функцию lag, схоронил.. но нет, думаю не подойдет (но я запустил,чтобы глазами увидеть), lag даст предыдущее значение для переданного мне же нужно работать с интервалом

Быстрее? А план у вашего запроса какой? Если там 1 скан, то быстрее уже нельзя

Сергей-Кравчук Автор вопроса
alex che
Быстрее? А план у вашего запроса какой? Если там 1...

1 Index Only Scan да, в общем случае... несколько на партиционированных таблицах... но так то да... логично, спасибо за аргумент )

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта