关于连接和表的问题与数百万行

xRo*_*bot 6 mysql sql database postgresql

我必须创建2个表:

杂志(这些列有1000万行:id,标题,流派,印刷,价格)

作者(包含以下列的1.8亿行:id,name,magazine_id)

.每个作者都只能写一本杂志,每本杂志都有更多的作者.

所以,如果我想了解Motors Magazine的所有作者,我必须使用这个查询:

SELECT * FROM Author, Magazine WHERE ( Author.magazine_id = Magazine.id ) AND ( genres = 'Motors' )
Run Code Online (Sandbox Code Playgroud)

这同样适用于"打印和价格"列.

为了避免与数百万行的表连接,我想使用这个表:

杂志(这一栏有1000万行:id,title,流派,印刷,价格)

作者(此列有1.8亿行:id,name,magazine_id,流派,打印,价格)

.而这个查询:

SELECT * FROM Author WHERE  genres = 'Motors' 
Run Code Online (Sandbox Code Playgroud)

这是一个好方法吗?

我想让它跑得更快

我可以使用Postgresql或Mysql.

Bil*_*win 6

不,我不认为如您所描述的那样复制信息对于关系数据库来说是一个很好的设计.

如果您更改给定杂志的类型或价格,则必须记住在重复信息的所有作者行中更改它.如果您有时忘记,最终会导致数据异常.你怎么知道哪一个是正确的?

这是关系数据库规范化的一个好处,用于表示冗余最少的信息,因此您不会出现异常.

为了让它运行得更快,我想你正在尝试做什么,你应该学习如何使用索引,特别是覆盖索引.