2

I am building a community site where logon will be by email and members will be able to change their name/nick name.

Do you think I should keep member name/nick name in my members table with other properties of member or create another table, write member name/nick name on that table and associate member’s id.

I am in favour of second option because, I think it would be faster to pull members name from it.

Is it right/better way?

Update: reason is for other table is that I need to pull username for different sections. For example forums. Wouldn't it be faster to query a small table for each username for each post in a from topic?

4

4 回答 4

4

我会将它保留在一个表中,并在该表中为电子邮件设置一个唯一约束。

我看不到添加另一个表的单一优势。

于 2011-09-08T15:02:43.037 回答
3

使用第一个选项:将名称/昵称保留在成员表中。在这种情况下,无需引入额外的表以及随之而来的连接开销。

于 2011-09-08T15:03:19.647 回答
3

为什么你认为第二种选择会更快?

如果昵称是必需的与成员 ID 的一对一关系,则将它们存储在同一个表中的适当位置。这仍然是索引单记录搜索,因此它应该或多或少与您的其他选项一样快。

事实上,这个解决方案可能会更快,因为您可以在与获取其他信息相同的SELECT 中获取昵称。

更新以回答问题的更新:

第二个表在行数方面并不小。SQL 搜索中的主要因素是 1) 表中的记录数和 2) 搜索索引部分的可能匹配数。

在这种情况下,较小表中的记录数将与较大表中的记录数完全相同。并且索引返回的可能匹配记录的数量将始终为 1,因为成员 ID 是唯一的。

您正在搜索的表中的列数通常与返回数据所花费的时间无关(您在 SELECT 语句中实际列出的列数可能会产生影响,但无论您是哪个表都是一样的搜索)。

SQL 数据库非常非常擅长查找数据。正确构建数据并让数据库担心将其恢复。正如他们所说,过早的优化是万恶之源。

于 2011-09-08T15:03:31.553 回答
0

是的,将会员 ID 与其他属性相关联是正确的方法。

您可以简单地在名称上创建索引以加快查询速度。

于 2011-09-08T15:02:54.063 回答