sql - 如何正确索引数据库以提高查询性能

标签 sql database database-design indexing foreign-keys

我正在使用 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/

相关文章:

sql - SQL数据类型负十进制

SQL Server : Why do use SMO?

sql - 选择最大计数

sql - Postgres - 列名中的空格和特殊字符 - 如何在查询中选择这些字符

mysql - 找不到基表或 View Magento

database - postgres 在 docker 容器中不起作用

mysql - 每月分期付款发票的数据库设计

mysql - 用于共享来自另一个用户的帖子的数据库设计

database - 在数据库中设计包月系统的良好实践

database - 如何在 postgres 中设置同步流复制?