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 ответов

5 просмотров

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 да, в общем случае... несколько на партиционированных таблицах... но так то да... логично, спасибо за аргумент )

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
5
Карта сайта