Rails Postgresql оптимизирует поиск предметов в разных регионах - PullRequest
0 голосов
/ 16 апреля 2020

Rails 5, Postgresql 10, Ruby 2.5.1

У меня есть товары (model Product) и много географических регионов (model Region). У меня нет дубликатов товаров, поэтому один товар может быть в регионе (id = 2) и регионе (id = 3). Также есть основной регион (id = 1), в котором есть все продукты.

Пример (что я хочу):

1) В регионе 1 мы видим все продукты

2) В области 2 мы видим продукты для области 2, а затем (после завершения / объединения) другие продукты (из области 1 без продукта из области 2).

Я думаю, что могу

1) создать модель Region (has_many products).

2) поиск по Region (region1.products)

Но это будет 3 запроса к БД.

- select fields from regions
- select product_id from regions_products where region_id
- select fields from products where id

А если Я хочу продукты из региона2 + регион1.

- select fields from regions
- select product_id from regions_products where region_id = 2 inner join product_id from regions_products where region_id = 1
- select DISTINCT fields from products where id order by region_id = 2

Есть ли более оптимальный способ? И какие показатели я могу сделать, чтобы оптимизировать его?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...