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

Привет! У меня есть select с условием по полю в jsonb

и у запроса есть limit и order by.
Как может так получиться, что запрос с limit 2 выполняется на порядок медленнее, чем с limit 50?
У них и планы разные - один использует индекс, другой нет.

4 ответов

16 просмотров
Eugene-Ivlev Автор вопроса

1) Версия Postgres 12.7 2) Запрос: select uuid from credit_application where (data @?? cast('$.approvedProducts[*].guarantorSets[*].guarantors[*].suretyApplicationIntegrationId ? (@ == "100")' as jsonpath)) = true order by integration_id asc limit 50; 3) План запроса с limit 50: Limit (cost=2791.71..2791.83 rows=50 width=60) -> Sort (cost=2791.71..2797.12 rows=2164 width=60) Sort Key: integration_id -> Bitmap Heap Scan on credit_application (cost=543.77..2719.82 rows=2164 width=60) " Recheck Cond: (data @? '$.""approvedProducts""[*].""guarantorSets""[*].""guarantors""[*].""suretyApplicationIntegrationId""?(@ == ""100"")'::jsonpath)" -> Bitmap Index Scan on credit_application_data_idx (cost=0.00..543.23 rows=2164 width=0) " Index Cond: (data @? '$.""approvedProducts""[*].""guarantorSets""[*].""guarantors""[*].""suretyApplicationIntegrationId""?(@ == ""100"")'::jsonpath)" План запроса с limit 2: Limit (cost=0.43..260.42 rows=2 width=60) -> Index Scan using uk_d3e9ebs8y56ub3hcuavg3cgjw on credit_application (cost=0.43..281312.93 rows=2164 width=60) " Filter: (data @? '$.""approvedProducts""[*].""guarantorSets""[*].""guarantors""[*].""suretyApplicationIntegrationId""?(@ == ""100"")'::jsonpath)" 4) Схема таблицы: create table credit_application ( uuid char(32) not null constraint credit_application_pkey primary key, created_date timestamp, last_modified_date timestamp, data jsonb, integration_id varchar(255) not null constraint uk_d3e9ebs8y56ub3hcuavg3cgjw unique, sales_stage varchar(255), status varchar(255), reason_won_lost varchar(255), update_type varchar(255), closed_date timestamp ); alter table credit_application owner to application_storage; create index credit_application_data_idx on credit_application (data);

Eugene Ivlev
1) Версия Postgres 12.7 2) Запрос: select uuid ...

А можете показать explain analyze для обоих запросов?

Eugene Ivlev
1) Версия Postgres 12.7 2) Запрос: select uuid ...

У вас, кстати, не такая схема (индэкс на data явно не тот).

Eugene-Ivlev Автор вопроса
Ilya Anfimov
У вас, кстати, не такая схема (индэкс на data явно...

Так Idea выдает. Вот как он создавался: CREATE INDEX CONCURRENTLY IF NOT EXISTS credit_application_data_idx ON credit_application USING gin (data);

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта