вот моя проблема.У меня есть огромное количество данных в таблицах «многие ко многим», которые мне приходится обновлять довольно часто, а также запрашивать их с помощью динамических фильтров, порядка и запросов по местоположению (postgis-db) ...
shop entity:
public class Shop extends BaseEntity {
....
@ManyToOne
@JsonIdentityReference(alwaysAsId = true)
@JsonSerialize(using = IdSerializer.class)
@JoinColumn(name = "parent_id")
private Shop parent;
@ManyToMany(mappedBy = "shops")
@JsonIdentityReference(alwaysAsId = true)
@JsonIgnore
private List<Product> products = new ArrayList<>();
...
}
сущность продукта:
public class Product extends BaseEntity {
...
@ManyToMany
@JsonIdentityReference(alwaysAsId = true)
@JoinTable(name = "product_shop",
joinColumns = @JoinColumn(name = "product_id"),
inverseJoinColumns = @JoinColumn(name = "shop_id"))
private List<Shop> shops = new ArrayList<>();
таблица товаров состоит из примерно 1 миллиона строк, а магазинов - около 8000. следовательно, таблица «многие ко многим» равна 8 *В худшем случае 10 ^ 9 строк, что приводит к очень длинному времени запроса.
любая идея, чтобы решить эту проблему оперативно, имея в виду, что я хочу отсортировать магазины в соответствии с полем местоположения, которое.
текущий технический стек:
- java 8
- пружинный ботинок
- hibernate / jpa
- postgresql / postgis