LINUX.ORG.RU

Помощь в изменении структуры БД

 


0

1

Использую PostgreSQL 11.

Есть таблица USERS 2 млн. записей

 
CREATE TABLE USERS (
  id INT NOT NULL,
  name VARCHAR(30) NOT NULL
);
INSERT INTO USERS 
    (id, name) 
VALUES 
    (1,'John'),
    (2,'Mike'),
    (3,'John');

также есть таблица для реализации связей внутри таблицы USERS 15 мнл. записей, по факту храним 2 числа: ид.записи, ид.свзяи.

CREATE TABLE LINKS (
  id INT NOT NULL,
  id_rec INT NOT NULL,
  id_link INT NOT NULL
);
INSERT INTO LINKS 
    (id, id_rec, id_link) 
VALUES 
    (1,1, 2),
    (2,1,3),
    (3,1, 4); 

Причем связь односторонняя, то есть связей всего 5000, к которым привязаны от 2 записей до 2 млн. записей, Джойнить эти 2 таблицы стало сложно, долго по времени и по ресурсам.

Хочу узнать мнения по оптимальному изменению структуры таблиц, может быть сделать таблицу на 5000 связей, которым указать идентификаторы в виде массива.

Может кто-то сталкивался с похожей проблемой?

Может быть тебе надо индексами воспользоваться например на links.id_rec? и убрать id записи в таблице связей, зачем он там?

redwagon
()

Джойнить эти 2 таблицы стало сложно, долго по времени и по ресурсам.

Покажи EXPLAIN типичного запроса.

theNamelessOne ★★★★★
()

Джойнить эти 2 таблицы стало сложно, долго по времени и по ресурсам.

Materialized view?

MumiyTroll ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.