数据透视表中的行数很多(Postgresql)

时间:2016-08-17 12:25:32

标签: ruby-on-rails database postgresql

我有一个视频数据库。每个视频可以有多个类别,因此我有一个数据透视表,可以将类别和视频连接在一起。

问题是video_category数据透视表有4769325行,我认为这对于这么简单的事情来说是巨大的。

有没有更好的方法来存储视频和类别之间的关系,仍然可以通过它们进行查询?它是Postgresql DB的RoR应用程序。

1 个答案:

答案 0 :(得分:0)

我不明白你的问题。 Afaik,PIVOT用于将行转换为列。 所以基本上你的视频和类别之间的多对多关系应该是这样的:

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

但是如果你在类别表上使用PIVOT,那么应该只有与视频一样多的行,因为视频的所有现有类别都会被分组到一行。

出于性能目的,我认为没有任何其他方法可以在SQL中表示多对多关系。

如果您的数据库开始运行缓慢,您将不得不处理自己的查询以加快速度。您可能还需要对索引字段做出明智的选择:一种不错的方法是在查询中查看哪些字段在WHERE语句中使用最多,并将其设置为索引字段。