Информация об изменениях

Сообщение Re: [postgres] массив в jsonb от 17.03.2025 13:34

Изменено 17.03.2025 13:35 bnk

Re: [postgres] массив в jsonb
Здравствуйте, barboss, Вы писали:

B>На больших объемах ищет очень долго. Видимо селект неоптимальный и не подключается индекс.

B>Можно ли ускорить выборку?

GPT (кто тут говорил о его бесполезности)?

Да, можно ускорить поиск за счёт использования оператора JSONB‑контейнера @>. Он особенно эффективен с GIN‑индексом, созданным для jsonb‑поля.

Например, вместо обхода массива через функцию jsonb_array_elements, можно выполнить запрос так:

  SELECT *
  FROM test_arr
  WHERE arr_ids @> '["c"]'::jsonb;

Здесь проверяется, содержит ли jsonb‑массив элемент "c". GIN‑индекс, созданный на столбце arr_ids, будет использован, что существенно ускорит выборку на больших объёмах данных.

Re: [postgres] массив в jsonb
Здравствуйте, barboss, Вы писали:

B>На больших объемах ищет очень долго. Видимо селект неоптимальный и не подключается индекс.

B>Можно ли ускорить выборку?

GPT (кто тут говорил о его бесполезности)? Всем приготовиться собирать огурцы.

Да, можно ускорить поиск за счёт использования оператора JSONB‑контейнера @>. Он особенно эффективен с GIN‑индексом, созданным для jsonb‑поля.

Например, вместо обхода массива через функцию jsonb_array_elements, можно выполнить запрос так:

  SELECT *
  FROM test_arr
  WHERE arr_ids @> '["c"]'::jsonb;

Здесь проверяется, содержит ли jsonb‑массив элемент "c". GIN‑индекс, созданный на столбце arr_ids, будет использован, что существенно ускорит выборку на больших объёмах данных.