|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Здравствуйте! Помогите грамотно составить SQL-запрос. Имеется таблица tab, в которой имеется поле data типа JSONB. В структуре JSON есть два общих атрибута:
Грубо получается примерно следующий запрос Код: sql 1. 2. 3. 4.
Здесь один подзапрос дублируется и в выражении select и в where. Возможно ли как то более оптимально составить запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 02:57 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Big Cheese, а на tab верхнего уровня ни каких больше условий не накладывается кроме заголовка от ссылки? Странный запрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 12:44 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Конечно, в таблице есть и другие поля, и возможны другие условия. Я привел максимально упрощенный запрос. В поле data хранятся табличные данные, и по аналогии с таблицей БД, у них тоже могут быть ссылки на другие записи. Соответственно, фильтрация и сортировка осуществляется над атрибутами JSON поля data. Почему это все хранится в JSON, а не в таблице БД? Это сделано для возможности динамического создания пользователем таблиц с произвольной схемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 13:12 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Big Cheese Конечно, в таблице есть и другие поля, и возможны другие условия. Я привел максимально упрощенный запрос. В поле data хранятся табличные данные, и по аналогии с таблицей БД, у них тоже могут быть ссылки на другие записи. Соответственно, фильтрация и сортировка осуществляется над атрибутами JSON поля data. Почему это все хранится в JSON, а не в таблице БД? Это сделано для возможности динамического создания пользователем таблиц с произвольной схемой. Прошу прощения, за такое архитектурное решение надо руки отрывать. :-) Если вам нужно динамическое создание таблиц, почему бы их просто не создавать в БД?! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 13:37 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Потому что система должна знать, что создал пользователь, структуру этих таблиц, уметь хранить там данные, делать выборку из таких таблиц и строить отчеты. В принципе можно обойтись и без JSON, но все равно это будет несколько взаимосвязанных таблиц, хранящие разные метаданные пользовательской таблицы. Хранение в JSON - это альтернативный вариант, хуже он или лучше, это другой вопрос, но я бы не стал тут отрывать руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 15:31 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Big Cheese Потому что система должна знать, что создал пользователь, структуру этих таблиц, уметь хранить там данные, делать выборку из таких таблиц и строить отчеты. В принципе можно обойтись и без JSON, но все равно это будет несколько взаимосвязанных таблиц, хранящие разные метаданные пользовательской таблицы. Хранение в JSON - это альтернативный вариант, хуже он или лучше, это другой вопрос, но я бы не стал тут отрывать руки. Это нельзя сделать так чтобы быстро работало. Или гибко или быстро... тут уж вам выбирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 16:13 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Big Cheese Потому что система должна знать, что создал пользователь, структуру этих таблиц, уметь хранить там данные, делать выборку из таких таблиц и строить отчеты. В принципе можно обойтись и без JSON, но все равно это будет несколько взаимосвязанных таблиц, хранящие разные метаданные пользовательской таблицы. Хранение в JSON - это альтернативный вариант, хуже он или лучше, это другой вопрос, но я бы не стал тут отрывать руки. Максимум, что нужно хранить, это кто какую таблицу создал/изменил. Все остальное, это эмуляция БД в БД. Зачем?! SQL - это очень гибкий ЯП, для манипулирования данными. Нужно создать БД - создавайте через DDL. Зачем создавать свой глючный велосипед?! Либо, использовать NoSQL, ту же Mongo. Которая как раз заточена под акой сценарий использования. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2020, 05:30 |
|
Оптимизация запроса со ссылочными полями в JSON
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
Может так? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2020, 00:16 |
|
|
start [/forum/topic.php?fid=53&msg=39965616&tid=1994656]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 149ms |
0 / 0 |