2010-07-14 49 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