Re: querying within json

Поиск
Список
Период
Сортировка
От Giuseppe Broccolo
Тема Re: querying within json
Дата
Msg-id CAFzmHiX5oXGe+kgatVNaq5QqB_BrADtZczHo79x+R4Pecn3vCw@mail.gmail.com
обсуждение исходный текст
Ответ на querying within json  (Tim Dudgeon <tdudgeon.ml@gmail.com>)
Ответы Re: querying within json  (Tim Dudgeon <tdudgeon.ml@gmail.com>)
Список pgsql-sql
Hi Tim,

2014-10-30 15:55 GMT+01:00 Tim Dudgeon <tdudgeon.ml@gmail.com>:
Any advice on how to best query for values within json (using 9.4). I have numeric fields within the json and want to include terms for those fields.

I've found that something like this works:

select * from atable where (json_col->>'numeric_prop')::numeric < 100;

But whilst that works:
1. seems to have unnecessary casts? The numeric _prop item is of numeric type, but its getting retrieved as text and then cast to numeric and then compared

The right operand type of the ->> oeprator is text when ->> is used to get a json object field. So the cast to numeric is needed.
 
2. its not going to use any index on the json_col jsonb column.

The usage of an index is mostly ruled by the 'selectivity' of the query. Anyway, if querying for particular items within the key is common (as 'numeric_prop' in your example), defining an index like this may be worthwhile:

CREATE INDEX idxgin_numeric_prop ON atable USING gin((json_col->'numeric_prop'));

Regards,
--
Giuseppe Broccolo - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
giuseppe.broccolo@2ndQuadrant.it | www.2ndQuadrant.it

В списке pgsql-sql по дате отправления:

Предыдущее
От: Tim Dudgeon
Дата:
Сообщение: querying within json
Следующее
От: Roberto Oliveira dos Santos
Дата:
Сообщение: [OFFTOPIC] unsubscribe list