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

Добрый вечер! Есть ли intersect-обратная функция для множеств в постгресе? Кейс в

том, что у меня есть несколько млн записей с jsonb массивами страниц и мне надо их сравнить как множества. То есть 1,2,3 = 2,1,2,3 ; 1,2,3 != 1,2,3,4 ; 1,2 != 1,2,3.
Сейчас я делаю это как select (dataBefore -> 'pages' <@ dataAfter -> 'pages') and (dataBefore -> 'pages' @> dataAfter -> 'pages') from table1; И оно работает медленно. Хотелось бы ускорить этот процесс, но я не знаю как. Пока что додумался в начало вставить сравнение длины массивов - на 100к записей время уменьшилось с 380 до 290 секунд. Что еще можно сделать?
Вот пример моего запроса, который работает медленно на большом кол-ве данных. https://sqlize.online/s/T2

3 ответов

9 просмотров

Для начала разговора о скорости запросов предоставьте информацыю из закрепа: https://t.me/pgsql/303899 Для этого можно воспользоваться вот этим скриптом: https://t.me/pgsql/476688 Без всей этой информацыи такой разговор будет беспредметным.

Попробуй сначала предварительно вычислить все dataBefore -> 'pages' и dataAfter -> 'pages‘ (в CTE или временной таблице), и потом сравнивать уже их Ещё в порядке эксперимента - попробовать преобразовать результат предвычислений к int[] и уже на него натравить <@. Возможно, что будет быстрее работать, чем сравнение json

Сергей-Б Автор вопроса
Nick Nalbantov
Попробуй сначала предварительно вычислить все data...

Первым вариантом пользовались раньше и он был быстрее, но тратил слишком много памяти. Сейчас проблему решил уходом с postgres_fdw на dblink. С изначальным запросом в этот чат оно не связано, но работу ускорило. Спасибо!

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
35
How to create an OS in C? what to study?
Linus
18
читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
Подскажите, есть какие-то события создания/уничтожения у TFrame по типу TForm (OnCreate и OnClose/OnDestroy) ? Как отловить создание TFrame и "перед" уничтожением. На Tframe р...
Денис
8
а чем хуже?
Alexey Kulakov
10
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
1
Всем привет, передавал ли кто-нибудь File с рендер процесса в main? Просто виснет js. Где именно я без понятия. Не отрабатывают никакие логи. Как только я передаю обычный масс...
Ilya Ilya
4
Карта сайта