Size: a a a

pgsql – PostgreSQL

2020 July 08

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
Ребят, привет! Можете помочь с пониманием?
Есть json, в нем где то 60 полей. Мне надо достать часть данных из этого json, например, только 15 полей.

json_extract_path(#>) я так понимаю грузит каждый раз json и вытаскивает одно поле. Что делает работу очень медленной.

Есть ли какие то другие решения, как это делать?
источник

AG

Artem Gubatenko in pgsql – PostgreSQL
Yaroslav Schekin
Условия PostgreSQL может вычислять в произвольном порядке, главное, что результат (игнорируя возможность ошибок) будет логически верным.
если произвольно, то
- если найдет что одна строка в таблице соответствует условию только с color,
- а другая строка соответствует другому условию (с color & material),
- и обе эти строки соответствуют другим условиям в запросе,

то в результат попадут ОБЕ строки?
Это не подходящее для меня поведение(
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Artem Gubatenko
если произвольно, то
- если найдет что одна строка в таблице соответствует условию только с color,
- а другая строка соответствует другому условию (с color & material),
- и обе эти строки соответствуют другим условиям в запросе,

то в результат попадут ОБЕ строки?
Это не подходящее для меня поведение(
Результат будет тот же, как при вычислении выражения по математическим правилам!
Каждая строка, для которой выражение в WHERE возвращает true, попадёт в результат.
источник

AG

Artem Gubatenko in pgsql – PostgreSQL
Yaroslav Schekin
Результат будет тот же, как при вычислении выражения по математическим правилам!
Каждая строка, для которой выражение в WHERE возвращает true, попадёт в результат.
спасибо, понял
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Дмитрий Матвеев
Ребят, привет! Можете помочь с пониманием?
Есть json, в нем где то 60 полей. Мне надо достать часть данных из этого json, например, только 15 полей.

json_extract_path(#>) я так понимаю грузит каждый раз json и вытаскивает одно поле. Что делает работу очень медленной.

Есть ли какие то другие решения, как это делать?
Т.е. эти поля на разных уровнях вложенности и т.п.?
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
Yaroslav Schekin
Т.е. эти поля на разных уровнях вложенности и т.п.?
один уровень вложенности для упрощение
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
Сейчас есть таблица с этими полями. и Есть json с этими полями.

Разница в производительности очень большая
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
не в пользу jsonb
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Дмитрий Матвеев
один уровень вложенности для упрощение
Ну так а если преобразовать в recordset, вроде jsonb_to_recordset, jsonb_each и т.п.?

> не в пользу jsonb

Ну а чего Вы ожидали в RDBMS-то? ;)
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
Yaroslav Schekin
Ну так а если преобразовать в recordset, вроде jsonb_to_recordset, jsonb_each и т.п.?

> не в пользу jsonb

Ну а чего Вы ожидали в RDBMS-то? ;)
попробую. Спасибо!
источник

AE

Andrey E in pgsql – PostgreSQL
Дмитрий Матвеев
не в пользу jsonb
Мне вот тоже эта тема интересна. Насколько большая разница и в каких запросах, что с индексами?
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
почти в 100 раз разница
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
и там даже полей меньше
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Дмитрий Матвеев
почти в 100 раз разница
Там DISTINCT во втором запросе, это некорректное сравнение.
Но конкретная разница зависит от ситуации, запоминать "взятые с потолка" 5x, или 10x, или 1000x — бесполезное занятие, IMHO. ;)
источник

AE

Andrey E in pgsql – PostgreSQL
Дмитрий Матвеев
почти в 100 раз разница
В 10 же
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
да, извиняюсь
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
источник

ДМ

Дмитрий Матвеев... in pgsql – PostgreSQL
Andrey E
В 10 же
чета я сегодня туплю))
источник