Size: a a a

pgsql – PostgreSQL

2021 July 03

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
между конфами и сообщениями нет M2M, просто связь через ещё одну талицу
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
это же плохо, дополнительные тормоза. А сколько конференций должна выдерживать база?
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
твой запрос сейчас в худшем случае будет выдавать колво строк, равное количеству всех конференций - ты их все собрался потреблять из постгреса?
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
там за экраном остался лимит с оффсетом, в этом плане всё нормально)
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
Это проект пока что +/- для себя, так что чем больше тем лучше
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
тормоза тормозами, а архитектура так выходит более удобная
источник

SA

Serhii Atamanov in pgsql – PostgreSQL
Да, это я упустил, извини. Вот:

class OwnerCat(pw.Model):
   owner = pw.ForeignKeyField(Owner)
   cat = pw.ForeignKeyField(Cat)
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
Тем более что я сомневаюсь что прям чудовищные тормоза от одного джоина возникнут
Зато в обмен - нормальная форма, избегание дублирования, плюшечки)
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
тороза будут от group by
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
лучше както так


select *
from (
   select converence as hot_conference_id, max(message) as last_message_id
   from (
       select conference, message
       from conference_messages
       order by message_id desc
       limit 100000 -- думаю столько не жалко потратить на seqscan
   ) _
   group by conference
) __
join messages m on m.id = last_message_id;


create index on conference_messages (message_id desc);
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
но если между активными конфами будет сильный разброс по колву сообщений, то самая активная конфа будет вытеснять осталные конфы из выборки
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
это практически то же что есть
у меня как бы вопрос в том что мне надо от максимального месседжа соответствующее ему поле sender выловить
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
разница в том, что в твоем запросе всегда будет делаться полный проход по таблице conference_messages. А в моем варианте проход делается только по верхушке таблицы
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
это вообще не принципиально сейчас)
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
когда тебе предложили оконную функцию, то ты сказал что производительность важна
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
она важна, но только если какие-то совсем большие расхождения будут, типа раз в 10 по производительности
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
наверное всё же сделаю на оконной функции, оно читается как-то проще
источник

VN

Vladislav Nezhutin in pgsql – PostgreSQL
оконная функцию думаю хуже, она вообще наверно будет всю таблицу conference_messages копировать во временную таблицу (а в оперативку петпроджекта она влазить быстро перестанет) изза чего возрастет io с диском
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
Ну вот получается два стула - оконная функция или подзапрос с джойном
источник

БГ

Бензофуран Гетероцик... in pgsql – PostgreSQL
Хоть монетку бросай)
источник