加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 有关数百万行的连接和表的问题

发布时间:2020-12-12 08:41:21 所属栏目:MsSql教程 来源:网络整理
导读:我必须创建2个表: 杂志(这些列有1000万行:id,标题,流派,印刷,价格) 作者(包含以下列的1.8亿行:id,name,magazine_id) . 每个作者都只能写一本杂志,每本杂志都有更多的作者. 所以,如果我想了解Motors Magazine的所有作者,我必须使用这个查询: SELECT * FROM
我必须创建2个表:

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

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

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

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

SELECT * FROM Author,Magazine WHERE ( Author.magazine_id = Magazine.id ) AND ( genres = 'Motors' )

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

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

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

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

.
而这个查询:

SELECT * FROM Author WHERE  genres = 'Motors'

这是一个好方法吗?

我想让它跑得更快

我可以使用Postgresql或Mysql.

解决方法

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

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

这是relational database normalization的一个优点,用于表示冗余最少的信息,因此您不会出现异常.

为了让它跑得更快,我想你要做的是什么,你应该学习how to use indexes,特别是covering indexes.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读