我有 MySql Innodb 表,其中有一列“url”,其中包含唯一的非重复 url 列表。某些 URL 的长度可能超过 255 个字符。我定期添加多个可能包含表中已有网址并需要将其过滤掉的网址。
在遇到那些长网址 (>255) 之前,我进行了下一步设置以一次添加多个记录:
- “url”列类型设置为 varchar(255)
- 主键设置为“url”列
添加多条记录:
INSERT IGNORE INTO table (url) VALUES (url1),(url2),..,(urln)
它仅向表中添加唯一的非重复网址。
如果我尝试将 varchar 长度更改为高于 255 的数字,则会收到错误:
Specified key was too long; max key length is 767 bytes
除了依赖主键/唯一键之外,是否有办法在添加多个记录的同时避免重复?
我知道innodb_large_prefix = ON
设置将索引限制增加到3000+字节,但是很困惑为什么该设置会在以后的MySql版本中贬值,并且在某种程度上仍然担心关于超出增加的限制(尽管可能性极小)。
我也尝试过修改部分前缀,但没有取得多大成功。
添加多条记录且没有重复记录和 key 长度限制的最佳方法是什么?
最佳答案
您还可以存储链接的 md5 或 sha 哈希值,并在该列上建立索引。
关于php - 一次插入多条记录,不重复(长度超过767字节)MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34458404/