【发布时间】:2011-06-30 21:52:55
【问题描述】:
我正在使用 OpenID 处理简单的登录页面:如果用户刚刚注册了 OpenID,那么我需要在数据库中为用户创建一个新条目,否则我只显示他们的别名和问候语。每次有人通过他们的 Open ID 进行身份验证时,我都必须通过查找哪个用户拥有给定的 OpenID 来找到他们的别名,如果主键是 UserID(并且有数百万用户),这似乎会相当慢。
我使用的是 SQL Server 2008,我的数据库中有两个表(Users 和 OpenIDs):我计划检查 OpenIDs 表中是否存在 Open ID,然后使用相应的 UserID 获取其余用户来自用户表的信息。
Users 表由 UserID 索引并具有以下列:
- 用户 ID (pk)
- 电子邮件
- 别名
- OpenID (fk)
OpenIDs 表由 OpenID 索引并具有以下列:
- OpenID (pk)
- 用户 ID (fk)
或者,我可以按 UserID 和 OpenID(即有 2 个索引)索引 Users 表,并完全删除 OpenIDs 表。
在这种情况下,为具有匹配 OpenID 的用户改进查询的推荐方法是:使用两个键索引 Users 表或使用 OpenIDs 表查找匹配的 UserID?
【问题讨论】:
标签: sql database database-design indexing foreign-keys