Size: a a a

pgsql – PostgreSQL

2020 June 13

2_

2flower _ in pgsql – PostgreSQL
можете тупо их убрать(distinct) понятно что результат не тот будет и сказать за производительность.
источник

Ð

Ð in pgsql – PostgreSQL
Tagil Steel
Мы к этому пришли как раз с варианта оьдельных запросов по каждой сущности.
странно что вы не пришли при этом к переезду с амазона на что-то более человеческое
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
выборка это не сложная операция, в отличие от дистинкта
Дистинкт не сложная операция если суммарное количество записей не сильно больше количества уникальных записей, как в нашем случае.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
странно что вы не пришли при этом к переезду с амазона на что-то более человеческое
Ну амазон не так плох, хотя это отдельный холивар.
источник

Ð

Ð in pgsql – PostgreSQL
я думал в вашем случае как раз наоборот, каждое попадание товара в две категории и более, порождает увеличение выборки
источник

Ð

Ð in pgsql – PostgreSQL
Tagil Steel
Ну амазон не так плох, хотя это отдельный холивар.
амазон ужасен, и ужасно дорог, а еще там ужасно медленные диски
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
я думал в вашем случае как раз наоборот, каждое попадание товара в две категории и более, порождает увеличение выборки
Вы правы, но таких попаданий не очень много. Коэффициент меньше двух.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
амазон ужасен, и ужасно дорог, а еще там ужасно медленные диски
Про диски не замечали, нам важнее возможность оперативного масштабирования и гибкость. По сравнению с арендой дедикейтед серверов расходы сократились при той же производительности.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
В таком случае, не затруднит ли Вас объяснить,  как технически PG будет исполнять код, содердащий вложенный запрос?
Не затруднит, я надеюсь. ;)
PostgreSQL всё равно, записали Вы:
SELECT *
 FROM (
      SELECT *
        FROM (
             SELECT *
               FROM a_table
              WHERE col1 = 12 AND col2 = 'x'
             ) AS nested_query1
      ) AS nested_query2

Или:
SELECT *
 FROM a_table
WHERE col2 = 'x' AND col1 = 12

Т.е. планировщик практически полностью игнорирует синтаксическую структуру запроса.
Т.е. обычно вложенные подзапросы подвергаются flattening  / pull-up (что фактически превращает 1-й запрос почти во второй), выполняется predicate pushdown (что перемещает условия из внешних запросов туда, где их наиболее выгодно выполнять), и сами условия деконструируются и переупорядочиваются так, как это выгодно.
источник

m

maxp.dev in pgsql – PostgreSQL
2flower _
12 часов жевать то, что очевидно, прочитав любую книжку по sql
не мешай человеку на Си программировать хардкор!
:)
источник

Ð

Ð in pgsql – PostgreSQL
не замечали потому что не было нагрузок, там просто адище. А насчет масштабирования - у того же хезнера давно есть такие же масштабируемве инстансы, только гораздо более дешевые (на порядки!). Гибкость у амазона имеет плюсы только в сложном управлении ролями, но я не работал в структурах, где это реально было бы кому-то необходимо.
источник

2_

2flower _ in pgsql – PostgreSQL
maxp.dev
не мешай человеку на Си программировать хардкор!
:)
вы правы,я выдохся, пусть делает свои насильные запросы со своим блэкджеком.
это его корова, и он ее доит.
источник

TS

Tagil Steel in pgsql – PostgreSQL
Yaroslav Schekin
Не затруднит, я надеюсь. ;)
PostgreSQL всё равно, записали Вы:
SELECT *
 FROM (
      SELECT *
        FROM (
             SELECT *
               FROM a_table
              WHERE col1 = 12 AND col2 = 'x'
             ) AS nested_query1
      ) AS nested_query2

Или:
SELECT *
 FROM a_table
WHERE col2 = 'x' AND col1 = 12

Т.е. планировщик практически полностью игнорирует синтаксическую структуру запроса.
Т.е. обычно вложенные подзапросы подвергаются flattening  / pull-up (что фактически превращает 1-й запрос почти во второй), выполняется predicate pushdown (что перемещает условия из внешних запросов туда, где их наиболее выгодно выполнять), и сами условия деконструируются и переупорядочиваются так, как это выгодно.
В этом вырожденном случае да, но в реальном запросе, когда Вы обрабатываете каждый результат подзапроса агрегатами и окнами, никакого flattening не случится.
Я говорю не теоретически, а по результатам того, что мы пробовали.
источник

TS

Tagil Steel in pgsql – PostgreSQL
То есть умный планировщик исправит Вас, если Вы засунете в подзапрос что-то, что можно развернуть. А если нельзя развернуть, то сделает как написано.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Tagil Steel
В этом вырожденном случае да, но в реальном запросе, когда Вы обрабатываете каждый результат подзапроса агрегатами и окнами, никакого flattening не случится.
Я говорю не теоретически, а по результатам того, что мы пробовали.
Но pushdown всё равно может работать, кстати.

> Я говорю не теоретически, а по результатам того, что мы пробовали.

И вот это странно — потому что если Вам удалось сделать это просто с помощью подзапроса, тут, скорее всего, что-то не так (не всегда, да).
источник

Ð

Ð in pgsql – PostgreSQL
делать олап кубы на сях для пг - может не так уж плохо, может когда-нибудь эта контора создаст расширение для пг ))
источник

2_

2flower _ in pgsql – PostgreSQL
ну как у них поиск в массиве на сях работает в sql я уже увидел.
источник

Ð

Ð in pgsql – PostgreSQL
там не должно быть массива, там должна быть карта (хэш-функция)
источник

TS

Tagil Steel in pgsql – PostgreSQL
Ð
делать олап кубы на сях для пг - может не так уж плохо, может когда-нибудь эта контора создаст расширение для пг ))
Так добрые люди из сообщества ПГ сделали все, чтобы писать расширения на C легко и приятно - АПИ шикарный.
И вообще - начал замечать - чем моложе персонаж - тем с Большим пафосом он произносит речи "надо делать по паттернам из такой-то книжки..."
Когда мы в это вникали, из книжек была только отЭРЕнная копия Assembly Language for the PC Питера Нортона, а большинство преподавателей вузов еще на свет не родились.
И при этом я не позволяю себе категоричны высказывания по по теме, в которой сам не попробовал и не разобрался.
источник

AB

Alexander B in pgsql – PostgreSQL
🤦‍♂
источник