我想知道Facebook(超过9亿用户),Twitter(超过3亿用户)等网站如何能够从数据库中选择用户的登录名和密码来检查登录凭据是否为a用户输入的是正确的。例如,在SQL中使用:
SELECT * FROM Persons
WHERE username=[username from user]
and password = [password from user]
但是在像Facebook这样的大型系统中,他们是否会选择所有9亿用户并在用户登录时检查单个用户的登录凭据?如果没有那么他们做了什么?
PS:
我问,因为我是这个领域的新人。我知道SQL,但想知道有数百万用户的系统如何检查用户的登录凭据以及用户从网站搜索某些特定信息的其他相关情况。
答案 0 :(得分:4)
是的,这是查询表的方式。这就是SQL的用途,可以有效地查询大量数据。
可以非常有效地订购/过滤正确的indexed列。数据库没有执行9亿条记录的线性搜索,它将使用某种优化的binary search。假设一个完美平衡的二叉树,搜索900,000,000的最坏情况只需要 30 比较,这是900,000,000的log2。