php - 一次插入多条记录,不重复(长度超过767字节)MySql

标签 php mysql sql-insert

我有 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/

相关文章:

php - PHP 中的随机字符串

php - 获取 Uncaught ReferenceError : using PHP

PHP + MySQL 插入不工作

mysql - 插入具有关联实体的多行

php - 搜索具有相似标签 ID 的记录

java - Spring Data Rest 发布无法保存嵌套对象

具有不同的php mysql日期提取

php - 将 mySQL_pconnect 转换为 mySQLi_connect 时出现问题

php - 无法允许人们更改表中的唯一条目

mysql - 使用 SQL 从现有数据生成测试表