2012-09-21 42 views
0

嗨,大家好,我有這個疑問...如何檢查值出現在一個非常大的數據記錄或一個大名單有效

,如果我有用戶名和密碼詳細信息登錄到網站的記錄我很可能會從表單中獲取用戶名和密碼,並將用於檢查給定的用戶名是否存在於數據庫中,通過使用contains()布爾操作,如果包含,則檢查密碼是否與保存的相同在數據庫中..

但是對於像g-mail和Facebook這樣的網站來說,有數百萬條記錄,身份驗證非常快...... 他們如何做到這一點他們如何遵循這個方法

他們如何檢查一個值是否存在於大記錄中? 這個過程是否只涉及添加更多的服務器來提高處理速度?

TY的答案...

**

  • 抱歉,我已經發布了這個問題,無需瞭解索引.. (剛剛纔知道,通過創建索引到一個或多列 全表掃描被最小化並且使用索引路徑代替,其中 成本更低且操作更有效率。)

**

+0

索引怎麼樣? –

+0

剛纔看到索引器... ty大衛 – 1and0

+0

@ 1and0:絕對沒有理由道歉!所以你可以刪除你的問題的修正案(粗體文本)... – home

回答

0

你只需要一個SQL查詢:

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

(其中:xxx是查詢參數)。

如果您在登錄列上有索引,或者甚至更好,請在[login-hashed_pa​​ssword]上執行查詢,這個查詢不應超過幾個毫秒。

+0

很棒..很清楚 – 1and0

0

那麼,他們有很多的服務器和高性能的數據庫。在較低級別,散列表可能是由散列索引的,用於快速查找 - 二進制搜索樣式。

0

對於大中型數據集索引,結合適當大小的磁盤,內存和cpus,是最常採用的方法。
對於非常大的數據集,數據庫可以是distributed和數據partitioned
對於非常非常大的數據集,除了上述情況外,使用的技術通常涉及使用map reduce模型。

相關問題