Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помощь в изменении структуры БД 
:(
    Опции темы
polin11
Дата 20.11.2020, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 6.6.2015

Репутация: нет
Всего: нет



Использую 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 связей, которым указать идентификаторы в виде массива.
Может кто-то сталкивался с похожей проблемой?


    
 
PM MAIL   Вверх
Akina
Дата 23.11.2020, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20476
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



1) Создай индексы. (по ID в USERS и по (id_rec, id_link) в LINKS).
2) ID во второй таблице нафиг не нужен. А созданный индекс объяви первичным.
3) Не надо выгребать сразу все пары, бери только то, что реально надо.

Добавлено через 59 секунд
Цитата(polin11 @  21.11.2020,  00:15 Найти цитируемый пост)
может быть
сделать таблицу на 5000 связей, которым указать идентификаторы в виде массива.

Зависит от конкретной задачи - но скорее всего лучше не станет, ибо работа с массивами тянет дополнительные накладные расходы.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PostgreSQL | Следующая тема »


 




[ Время генерации скрипта: 0.1143 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.