0

嗨,伙计们,我有这个疑问......

如果我有登录网站的用户名和密码详细信息记录,我很可能会从表单中获取用户名和密码,并将使用contains( )布尔运算,如果包含则检查密码是否与保存在数据库中的密码相同。

但是对于像 g-mail 和 Facebook 这样的网站,有数百万条记录,并且身份验证非常快......他们是如何做到的......他们为此遵循什么方法

他们如何快速检查大型记录中是否存在值?该过程是否涉及仅添加更多服务器以提高处理速度?

求答案...

**

  • 抱歉,我在不了解索引器的情况下发布了这个问题..(刚刚知道通过为一列或多列创建索引,全表扫描被最小化,而使用索引路径,这样成本更低,操作更高效..)

**

4

3 回答 3

0

您只需要一个 SQL 查询:

select 1 from user u 
where u.login = :theEnteredLogin 
and u.hashed_password = :theHashedEnteredPassword

:xxx查询的参数在哪里)。

如果您在登录列上有索引,甚至更好,在 [login - hashed_pa​​ssword] 上,查询的执行时间不应超过几毫秒。

于 2012-09-21T09:16:45.837 回答
0

嗯,他们有很多服务器和高性能数据库。在低级别,散列表可能由散列索引以进行快速查找 - 二进制搜索样式。

于 2012-09-21T09:17:22.517 回答
0

For medium to large data sets indexing, combined with proper sizing of disk, memory and cpus, is the most adopted approach.
For very large data sets, the database can be distributed and data partitioned.
For very, very large data sets, aside from the above scenarios, used technologies usually involve using map reduce model.

于 2012-09-21T10:07:47.910 回答