2010-07-14 70 views
2

我被問到過,與當前的問題略有不同。但沒有得到我正在研究的答案。獨特索引中的url的md5散列

我的問題是我需要商店md5($url)在MySQL的唯一索引?我已經在一些代碼中看到了這一點,實際上我不記得..這是一個擁有超過500萬個URL的大型數據庫,並且通過調用URL來完成索引。

任何想法?

+5

我其實不知道你在問什麼。在搜索之前,有人會對模式進行散列的原因是爲了加快搜索速度或減少存儲需求。 – Borealid 2010-07-14 08:34:58

+0

散列值只會幫助尋找索引查詢速度的微不足道的數量;當然這會比維護和存儲散列索引的成本低。存儲和搜索哈希項目而不是未哈希項目的一個原因是隱藏實際項目值。當物品被散列時,用戶需要知道它的價值來使用它來查找記錄。 – 2010-07-14 13:34:09

回答

1

有些網站使用散列在數據庫URL,因爲它們使用散列在URL中說用戶重定向到外部URL。如果情況並非如此,我看不出有任何理由要這樣做。

0

你說的網址被稱爲例如:

www.yourdomain.com?id=89ce9250e9f469c9d1816e1cc0fb47a1 

,然後ID(89ce9250e9f469c9d1816e1cc0fb47a1這是真實的URL查詢字符串的MD5())從數據庫來解決實際擡頭網址可能是這樣的:

www.yourdomain.com?user=23&location=5&eventtype=23&year=2010 

這是你說的用法嗎?

吉姆

+0

那麼md5是單向的,所以不會真的與md5一起工作,但是想法是,IMO與mathew想要的一樣 – DrColossos 2010-07-14 08:44:56

+0

Dr - 是的,我知道md5是單向的。我的想法是,他有一個獨特的列存儲網址的MD5,它從輔助列中查找實際值..是否有意義?當然不知道他爲什麼要這樣做,但也許更新的問題將回答:) – 2010-07-14 08:51:10

2

我不認爲你應該哈希你的網址。唯一可能的原因是節省空間(如果大多數URL大於32個字符),但會增加碰撞風險。

你應該做的是normalize the URLs