2016-08-17 4 views
0

У меня есть база данных видео. Каждое видео может иметь несколько категорий, поэтому у меня сводная таблица для подключения категории и видео вместе.Огромное количество строк в сводной таблице (Postgresql)

Проблема заключается в том, что в сводной таблице video_category имеется 4769325 строк, что, по моему мнению, огромно для такой простой вещи.

Есть ли лучший способ хранения связи между видео и категорией и по-прежнему иметь возможность запрашивать через них? Это приложение RoR с DB Postgresql.

ответ

0

У меня нет проблем. Afaik, PIVOT используется для переноса строк в столбцы. Так в основном ваш Много-ко-многим между видео и категории должны быть такими:

|*fk_vidID*|**fk_cateID**| 
-------------------------- 
| videoID1 | categoryID1 | 
| videoID1 | categoryID5 | 
| videoID3 | categoryID5 | 
| videoID4 | categoryID2 | 

Но в случае, если вы используете PIVOT на категории столе должны быть только столько строк, сколько есть видео, потому что все существующие категории для видео будут сгруппированы по одной строке.

Для вашей цели производительности я не думаю, что есть другие способы представления отношений Many-to-Many в SQL.

В случае, если ваша база данных начнет работать медленно, вам придется работать над запросами, чтобы ускорить ее. Вероятно, вам также понадобится сделать разумный выбор в отношении полей индекса: достойным способом является просмотр в ваших запросах, какие поля наиболее часто используются в операторах WHERE и задают его как поля индексирования.

+0

моя «проблема» заключается в том, что в сводной таблице будет несколько миллионов строк. Обычно ли так много строк в сводной таблице? –

+0

Сколько строк у вас есть в основной таблице видео и в таблице категорий? Обычно таблица 'PIVOT' содержит меньше строк, но больше столбцов ... – LostReality

+0

У меня 9990 видео и 113 категорий, но в будущем будет около 2 миллионов видео. –

Смежные вопросы