小编mer*_*inn的帖子

如何在MySQL中存储URL

我需要在数据库中存储数百万个URL.每个URL都应该是唯一的,因此我将使用ON DUPLICATE KEY UPDATE并计算重复的URL.

但是,我无法在URL字段上创建索引,因为我的varchar字段是400个字符.MySQL抱怨并说; "#1071 - 指定密钥太长;最大密钥长度为767字节".(Varchar 400将占用1200字节)

如果您需要在一台服务器中每天处理至少500000个URL,那么最好的方法是什么?

我们已经在考虑将MongoDB用于相同的应用程序,因此我们可以简单地查询MongoDB并找到重复的URL,并更新该行.但是,我并不赞成使用MongoDB来解决这个问题,我想在这个阶段只使用MySQL,因为我希望在开始时尽可能精简并更快地完成项目的这一部分.(我们还没有玩过MongoDB,也不想在这个阶段花时间)

使用更少的资源和时间是否还有其他可能性.我想要获取URL的MD5哈希并存储它.而且我可以将该字段改为UNIQUE.我知道,会有冲突,但如果这是唯一的问题,那么在1亿个网址中可以有5-10-20个重复项.

你有什么建议吗?我也不想花10秒钟只插入一个URL,因为它每天会处理500k个URL.

你会建议什么?

编辑:根据请求,这是表定义.(我现在不使用MD5,它用于测试)

mysql> DESC url;
+-------------+-----------------------+------+-----+-------------------+-----------------------------+
| Field       | Type                  | Null | Key | Default           | Extra                       |
+-------------+-----------------------+------+-----+-------------------+-----------------------------+
| url_id      | int(11) unsigned      | NO   | PRI | NULL              | auto_increment              |
| url_text    | varchar(400)          | NO   |     |                   |                             |
| md5         | varchar(32)           | NO   | UNI |                   |                             |
| insert_date | timestamp             | NO   |     | CURRENT_TIMESTAMP | on update …
Run Code Online (Sandbox Code Playgroud)

mysql

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

mysql ×1