Size: a a a

pro.rb (Ruby/Rails / RU)

2021 March 19

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Кто-нибудь решал такую проблему:

Postgresql

есть очень большой запрос, с несколькими джойнами. Нужен DISTINCT селект, чтобы не было одинаковых записей. Все хорошо работает и отдает что надо. Но тут у нас появилась задача рандомно их выдавать. Ну я и написал order(Arel.sql('random()')) - постгрес пишет что не поддерживает эту фичу (Distinct и random вместе). Я пока оставил sample(limit) - но мне кажется что это медленное решение, если записей будет очень много
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Находили ли какое-нибудь еще решение?
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
вот в mysql помнится такой проблемы вообще нет(
источник

A

Alexandr in pro.rb (Ruby/Rails / RU)
Ivan Naumov
Кто-нибудь решал такую проблему:

Postgresql

есть очень большой запрос, с несколькими джойнами. Нужен DISTINCT селект, чтобы не было одинаковых записей. Все хорошо работает и отдает что надо. Но тут у нас появилась задача рандомно их выдавать. Ну я и написал order(Arel.sql('random()')) - постгрес пишет что не поддерживает эту фичу (Distinct и random вместе). Я пока оставил sample(limit) - но мне кажется что это медленное решение, если записей будет очень много
А если random через руби отдавать?
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Alexandr
А если random через руби отдавать?
ну я так и сделал через sample пока что - но я волнуюсь что когда таблица вырастет, то выполняться долго будет
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
пока что думаю написать вьюху для этого запроса, думаю что получится по ней отсортировать рандомно
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
раз вот так работает:
SELECT * FROM (SELECT DISTINCT ...) ORDER BY RANDOM()

но выглядит как то костыльно
источник

R

Rafkat in pro.rb (Ruby/Rails / RU)
тот чувак кидалой
источник

AI

Alex Ilizarov in pro.rb (Ruby/Rails / RU)
Ivan Naumov
раз вот так работает:
SELECT * FROM (SELECT DISTINCT ...) ORDER BY RANDOM()

но выглядит как то костыльно
Почему костыльно? Это не только не костыльно но еще и шустро работает
источник

AI

Alex Ilizarov in pro.rb (Ruby/Rails / RU)
С CTE на старых версиях было бы мелленнее чем с подзапросами
источник

AI

Alex Ilizarov in pro.rb (Ruby/Rails / RU)
Ivan Naumov
пока что думаю написать вьюху для этого запроса, думаю что получится по ней отсортировать рандомно
Вьюха это избыточно, раз у тебя такой простой запрос раьотает
источник

Р

Руслан in pro.rb (Ruby/Rails / RU)
Ivan Naumov
Кто-нибудь решал такую проблему:

Postgresql

есть очень большой запрос, с несколькими джойнами. Нужен DISTINCT селект, чтобы не было одинаковых записей. Все хорошо работает и отдает что надо. Но тут у нас появилась задача рандомно их выдавать. Ну я и написал order(Arel.sql('random()')) - постгрес пишет что не поддерживает эту фичу (Distinct и random вместе). Я пока оставил sample(limit) - но мне кажется что это медленное решение, если записей будет очень много
Если задача позволяет, то можно сначала вытащить через pluck нужные айди (попутно можно оставить только uniq!), этот массив рандомизировать, а уже потом отдавать в запрос на одну-единственную запись. Либо не тащить плюком сотни тысяч записей, а выяснить их количество, а уже потом массив рандомизировать.
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Руслан
Если задача позволяет, то можно сначала вытащить через pluck нужные айди (попутно можно оставить только uniq!), этот массив рандомизировать, а уже потом отдавать в запрос на одну-единственную запись. Либо не тащить плюком сотни тысяч записей, а выяснить их количество, а уже потом массив рандомизировать.
не, такое себе, это ещё медленнее будет работать
источник

Р

Руслан in pro.rb (Ruby/Rails / RU)
Ivan Naumov
не, такое себе, это ещё медленнее будет работать
Медленнее, чем запрос с джойнами? Мощный запрос
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Руслан
Медленнее, чем запрос с джойнами? Мощный запрос
ну один запрос быстрее отработает чем два
источник

IN

Ivan Naumov in pro.rb (Ruby/Rails / RU)
Alex Ilizarov
Почему костыльно? Это не только не костыльно но еще и шустро работает
возможно, но как то выглядит совсем не очевидно
источник

DT

Dmitry Tsepelev in pro.rb (Ruby/Rails / RU)
Ivan Naumov
ну я так и сделал через sample пока что - но я волнуюсь что когда таблица вырастет, то выполняться долго будет
еще и потребление памяти вырастет
источник

LK

L K in pro.rb (Ruby/Rails / RU)
всем привет
есть легаси проект, и там пума память кушает очень странно
я не разработчик, но надо хоть немного понимать что это может быть

прыжки происходят ночью в 2, 4, 6 ночи
кстате, процессы пума продятся, прыжок памяти где-то +- 300mb
при остановке пумы некоторые процессы остаются работать. Как будто они детачатся от главного процесса

ruby 1.9.2p180
puma Version 3.6.0 (ruby 1.9.2-p180), codename: Sleepy Sunday Serenity
rails 3.1.1
источник

LK

L K in pro.rb (Ruby/Rails / RU)
источник

LK

L K in pro.rb (Ruby/Rails / RU)
источник