powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помощь в изменении архитектуры БД
5 сообщений из 5, страница 1 из 1
Помощь в изменении архитектуры БД
    #40020926
polin11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую PostgreSQL 11.
Есть таблица USERS 2 млн. записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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 числа:
ид.записи, ид.свзяи.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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 связей, которым указать идентификаторы в виде массива.
Может кто-то сталкивался с похожей проблемой?
...
Рейтинг: 0 / 0
Помощь в изменении архитектуры БД
    #40020933
Фотография mefman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,
партишнинг.
а вообще планы неудовлетворительных джойнов хотелось бы посмотреть для начала.
...
Рейтинг: 0 / 0
Помощь в изменении архитектуры БД
    #40021496
Фотография DSKalugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11
Использую PostgreSQL 11.
по факту храним 2 числа:
ид.записи, ид.свзяи.
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE LINKS (
  id INT NOT NULL,
  id_rec INT NOT NULL,
  id_link INT NOT NULL
);


"По факту" тут 3 поля. Какое из них ссылается на таблицу пользователей?
Не хватает самого запроса, в котором видны join-связи полей между таблицами
Можно было бы порекомендовать создание индексов по ним.

В любом случае должен быть первичный ключ для таблицы пользователей
Код: plsql
1.
ALTER TABLE USERS ADD CONSTRAINT PK_USERS_ID PRIMARY KEY(ID)
...
Рейтинг: 0 / 0
Помощь в изменении архитектуры БД
    #40021570
Favn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
polin11,
а в чем глубинный смысл использования поля Id в таблице связей? Обычно связи не нужен суррогатный ключ, нужен натуральный - что и с чем связываем.
...
Рейтинг: 0 / 0
Помощь в изменении архитектуры БД
    #40021576
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
polin11,

авторХочу узнать мнения по оптимальному изменению архитектуры таблиц,

вы обьясните зачем (что хотите получить) тогда и можно будет подумать КАК.
если для решения авторДжойнить эти 2 таблицы стало сложно, долго по времени и по ресурсам.
то начинать надо с ваших запросов и explain analyze их
а потом уже думать можно будет что то ускорить другой структурой или нет.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помощь в изменении архитектуры БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]