连接表是否比直接放置另一个表的字符串更好?

时间:2017-09-21 16:43:31

标签: mysql sql

表单示例让我说我有两个表

      users                     posts
[ id  -  username ]    [ id  -  username  -   content ]
[ 1   -   AXBAXBA ]    [ 1   -   AXBAXBA  -  contentA ]
[ 2   -   AXAAXAA ]    [ 2   -   AXAAXAA  -  contentB ]
[ 3   -   AXDAXDA ]    [ 3   -   AXDAXDA  -  contentC ]

这种设计更好吗?因为我将快速使用一个查询

SELECT username, content FROM posts

或者更适合使用此表设计加入

      users                     posts
[ id  -  username ]    [ id  -  userid  -   content ]
[ 1   -   AXBAXBA ]    [ 1   -     1    -  contentA ]
[ 2   -   AXAAXAA ]    [ 2   -     2    -  contentB ]
[ 3   -   AXDAXDA ]    [ 3   -     3    -  contentC ]

然后继续加入查询

SELECT a.username, b.content FROM users a LEFT JOIN posts b ON a.id = b.userid

哪种设计更好,为什么?

3 个答案:

答案 0 :(得分:5)

如果[users]和[posts]之间只有1对1的关系,那么只需使用一个表(id,username,content)。如果单个用户可以拥有多个内容,那么后一种设计就是可行的方法。这样,您可以将用户信息存储在一个地方,如果您需要更改用户#1的用户名,则只需更新[用户]。

答案 1 :(得分:2)

后一个建议更好。字符串比整数占用更多的存储空间。如果你可以将表与整数而不是字符串联系起来,那就去做吧。

只是一个警告,列有名为' id'在这两个表中操作时可能会导致一些混乱。我认为最好将这个名字命名为“#id;'帖子表中的列' postid'只是我的两分钱。

答案 2 :(得分:2)

加入总是使您的查询更快,而不是加入查询以获得结果。如果您的查询返回小数据,那么如果结果很大,则进行查询连接。转到连接。