Anna
23.03.2018
14:26:14
просто положу на всякий случай
Александр
23.03.2018
14:26:44
Ну вот джойном только одно пересечение можно получить
По крайней мере, я не знаю как иначе
ojab
23.03.2018
14:28:05
Посмотри explain analize с обоими субселектами, а потом посмотри его же с одним джойном. Поймёшь, что тебе не нужен join.
Google
ojab
23.03.2018
14:28:14
если тебе нужны только юзеры
Александр
23.03.2018
14:28:32
Смотрел)
ojab
23.03.2018
14:29:00
и джойнить быстрее?
тогда User.joins(:favorite_items, :viewable_items).where(favorite_items: { user_id: user }).or.where(viewable_items: { user_id: user })
Vasiliy
23.03.2018
14:30:40
ожаб, раз уж речь зашла
Александр
23.03.2018
14:30:43
Vasiliy
23.03.2018
14:31:03
если субселекты быстрее то в каких случаях тогда джоин выигрывает у сабселекта?
Александр
23.03.2018
14:31:07
А, нет, не внимательно посмотрел
ojab
23.03.2018
14:32:11
но вообще надо explain analize смотреть и решать по ситуации
Александр
23.03.2018
14:32:50
а пробовал user.favorited_user_ids?
Vasiliy
23.03.2018
14:32:54
а, точно, при сабселекте мы ж к данным не имеет доступа
Google
ojab
23.03.2018
14:32:54
(и я про postgres, остальных местах может быть по-другому)
Vasiliy
23.03.2018
14:33:35
да я как-то тоже советовал чуваку джоины, кто-то предложил сабселект и был немного удивлен что джоины на столько тормозные
ну т.е. я потом померил результаты запросов
ojab
23.03.2018
14:34:09
ну, для джойна в общем случае надо построить временную таблицу со всеми развёрнутыми записями.
так что неудивительно
а субселект в общем случае — пересечение индексов
Александр
23.03.2018
14:35:46
То есть с сабселектом нормальное решение?
ojab
23.03.2018
14:37:19
ну, ничего плохого в этом нет. Но, опять же, explain analyze.
Vasiliy
23.03.2018
14:38:17
а, к примеру, если запрос очень длинный, от этого ничего? ну т.е. ты сделал выборку идов юзеров, и потом запрос с этими идами делаешь, а там из дохуища, типа User.where(id: user_ids)
ojab
23.03.2018
14:40:01
в общем случае ок, ибо оно тот же index scan сделает, но хуже чем subselect.
Александр
23.03.2018
14:41:09
Там будет такой запрос
SELECT COUNT(DISTINCT "users"."id")
FROM "users"
INNER JOIN "favorite_items"
ON "favorite_items"."user_id" = "users"."id"
INNER JOIN "viewed_items"
ON "viewed_items"."user_id" = "users"."id"
WHERE (favorite_items.user_id = 2 OR viewed_items.user_id = 2)
ojab
23.03.2018
14:42:14
ну left_joins, да.
хотя хз как оно развернётся
Александр
23.03.2018
14:45:15
Тоже не то, по крайней мере, у варианта с User.where(id: ).or(id: ) совершенно другой ответ
В общем, оставлю здоровенную хуйню из сабселектов
ojab
23.03.2018
14:46:53
А что мешает ассоциации сделать, чтобы можно было user.favorited_user_ids делать?
Александр
23.03.2018
14:48:51
Там, конечно, можно, но это все превращается в большой запрос с тем же джойном
Google
Александр
23.03.2018
15:10:00
Вот в такие моменты ощущается нехваток теории, может, подскажете какую литературу? И общую, и postgres
Zamira
23.03.2018
16:52:08
Я же как бэкендщик могу тупить по фронту? У меня возможно немного тупой вопрос.
Как в simple_form добавить кнопку не типа submit?
Aleksey
23.03.2018
16:55:44
Вручную внутри формы добавить можно все что угодно
Artem
23.03.2018
17:40:15
Всем доброго вечера
Есть проект, стоит в продакшене на довольно большой бд на постгресе
Сделали новую версию с небольшими изменениями в структуре бд, и нужно теперь запустить их паралельно
pny
23.03.2018
17:41:35
Довольно большой это сколько?
Artem
23.03.2018
17:41:47
В бд только добавили столбцы
Ничего не удалялось
Гигов на 250
В последствии старую версию нужно будет убить
В распоряжении 2 машины
Обе в локалке
pny
23.03.2018
17:43:42
че большого то?
Artem
23.03.2018
17:45:58
Суть даже не в этом
Обе версии должны в одной бд крутится
С возможностью потом убить одну из них
Без переносов бд
pny
23.03.2018
17:47:11
А есть проблема сделать так что бы обе версии одну схему умели?
Google
Artem
23.03.2018
17:48:27
Нет
pny
23.03.2018
17:49:14
Ну вот
Artem
23.03.2018
17:50:00
Нужно сделать репликацию мастер мастер я правильно понимаю?
pny
23.03.2018
17:51:02
Дык нафига ваще репликация?
Две приложухи ходят в одну бд
Artem
23.03.2018
17:52:49
Один сервер со старой бд нужно будет убрать, соответственно нужно перенести бд на новый сервер, как это сделать быстро без потери работоспособности?
pny
23.03.2018
18:02:53
А это уже не рубишная тема :(
ojab
23.03.2018
18:42:11
проще всего поднять слейв и сделать его мастером
даунтайм будет в любом случае
Denis
24.03.2018
20:05:20
Почему если я использою remote: true форму не работает redirect_to?
Zamira
24.03.2018
20:08:19
Denis
24.03.2018
20:08:41
окей. а как заставить тогда рабоать?
Zamira
24.03.2018
20:09:13
А не редиректят с аякса. Это же нужно как раз что бы что-то сделать оставаясь на текущей странице
Denis
24.03.2018
20:10:03
render json передается в js и выполняется
Zamira
24.03.2018
20:10:06
А что ты хочешь вообще реализовать? Зачем делаешь Аякс запрос если нужно потом редиректить?
Denis
24.03.2018
20:10:19
Вывод сообщения и редикт
Zamira
24.03.2018
20:11:52
Это тогда вот здесь надо писать после вывода сообщения переход по нужному адресу. Иначе никак
Denis
24.03.2018
20:12:24
окей. вроде понял
Google
Zamira
24.03.2018
20:13:12
Только я уже не подскажут как яваскриптом делать переход по адресу. Я бэкендщик ?
Denis
24.03.2018
20:13:13
А выйдет сделать чтобы сначала перешел переход на страницу новую а потом вывелось сообщение?
Zamira
24.03.2018
20:13:29
Denis
24.03.2018
20:14:04
Просто хотел чтобы уже все через одну либу делалось коряво будет если половина через flash
Zamira
24.03.2018
20:14:05
Делаешь обычный запрос. При редиректе передаешь сообщение для флэшки
Ну не флеш а что то другое
Не суть
Главное при редитекте можешь сообщение передать параметром
А там уже на document load выводить сообщение как хочешь
Норм?
Denis
24.03.2018
20:20:36
да норм
делаю редирект через js
Astro
25.03.2018
06:49:53
Good morning friends.
Can I ask one question from Korea ?
Aldar
25.03.2018
07:22:28
Only if you are from the North Korea
Lavrushchik
25.03.2018
11:28:41
блин. увидел про корею и забыл, что хотел спросить)
слуште, есть sitemap_generator под рельсы, и там пингуются поисковики гугла и бинда.
как яндекса добавить?