1

我想知道 Facebook(超过 9 亿用户)、Twitter(超过 3 亿用户)等网站如何从数据库中选择用户的登录名和密码来检查用户是否输入了登录凭据是正确的。例如,在 SQL 中,您使用:

SELECT * FROM Persons
WHERE username=[username from user] 
  and password = [password from user]

但是在像 Facebook 这样的更大系统中,他们是否会选择所有 9 亿用户并在用户登录时检查单个用户的登录凭据?如果不是,那么他们会做什么?

PS:

我问是因为我是这个领域的新手。我知道 SQL,但想知道拥有数百万用户的系统如何检查其用户的登录凭据以及用户从站点搜索某些特定信息的其他相关情况。

4

1 回答 1

4

是的,这就是查询表的方式。这就是 SQL 的用途,高效地查询大量数据。

可以非常有效地对正确索引的列进行排序/过滤。该数据库不会对 9 亿条记录进行线性搜索,它将使用某种优化的二分搜索。假设一棵完美平衡的二叉树,搜索 900,000,000 的最坏情况只需要30次比较,即 900,000,000 的 log2。

于 2012-09-25T14:42:06.227 回答