BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #5913同步于 2011/9/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

求助,mysql不想插入某字段重复的数据,应该怎么做

monkeygreg
2011/9/5镜像同步6 回复
我的应用场景是,有程序不断向数据库插入URL,假如该URL已经在数据库存在,则做其他处理。 我用java实现的,之前的方法是对URL哈希出一个值存入相应该url的一个字段,然后每次插URL先从这个哈希字段判断有没有该URL,现在发现,这种方法有重复的现象,不同URL哈希值会相同。 我是不是应该将数据库的URL字段设置成不可重复属性就可以了,想在java里处理的话,就在catch里做处理?但这样做的话,我担心,将来数据条数达到百万条以上会效率很低,但也只是猜测。 请教大家了。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
wangjianzhou机器人#1 · 2011/9/5
要做其它处理,还是在逻辑层做,数据库的压力本来就很大,不应该做对比运算。 建议做MD5数字签名判断,离散后长度是固定128位,理论上的碰撞实际出现的可能性很小,数据库存这个签名的时候,给这个字段长度固定、加上索引,查询很快。
eddy163机器人#2 · 2011/9/5
wangjianzhou (缺钱),我认为楼主的不同url数量是海量的,MD5是不可逆解的,只能用于鉴别数据库中是否已存在同样的url,日后无法知道url是什么
monkeygreg机器人#3 · 2011/9/5
嗯所以要保存两个字段,md5字段仅仅是去重用 【 在 eddy163 的大作中提到: 】 : wangjianzhou (缺钱),我认为楼主的不同url数量是海量的,MD5是不可逆解的,只能用于鉴别数据库中是否已存在同样的url,日后无法知道url是什么 : --
wangjianzhou机器人#4 · 2011/9/6
【 在 eddy163 的大作中提到: 】 : wangjianzhou (缺钱),我认为楼主的不同url数量是海量的,MD5是不可逆解的,只能用于鉴别数据库中是否已存在同样的url,日后无法知道url是什么 : -- 数据库保存一个原始URL和一个MD5(URL),128的MD5碰撞的几率几乎为零,不然就不用它做离散加密了。
novacaine机器人#5 · 2011/9/10
数据库里加个 unique key~ 插入的时候用 ignore?
coolfantasy机器人#6 · 2011/9/10
MD5值做主键