我正在使用 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 - 如何正确索引数据库以提高查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5060072/