Postgres создание индекса для столбца jsonb, имеющего JSON значение массива - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть таблица сотрудников в postgres, в которой есть столбец JSON «мобильный». Он хранит JSON значение массива,

e_id(integer)  name(char)   mobile(jsonb)
1              John         [{\"mobile\": \"1234567891\", \"status\": \"verified\"},{\"mobile\": \"1265439872\",\"status\": \"verified\"}]
2              Ben          [{\"mobile\": \"6453637238\", \"status\": \"verified\"},{\"mobile\": \"4437494900\",\"status\": \"verified\"}]

У меня есть поисковый API, который запрашивает эту таблицу для поиска сотрудника по номеру мобильного телефона.

Как я могу напрямую запрашивать номера мобильных телефонов? Как мне создать индекс для столбца jsonb , чтобы запрос работал быстрее?

* обновленный вопрос

1 Ответ

1 голос
/ 26 февраля 2020

Вы можете сделать запрос следующим образом:

SELECT e_id, name
FROM employees
WHERE mobile @> '[{"mobile": "1234"}]';

Следующий индекс поможет:

CREATE INDEX ON employees USING gin (mobile);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...