保持TEXT字段在MySQL数据库中唯一的最佳方法

我想在我的MysqL表中使TEXT字段的值唯一.

经过小规模的研究后,我发现由于性能问题,每个人都不鼓励在TEXT字段上使用UNIQUE INDEX.我现在想要使用的是:

1)创建另一个字段以包含TEXT值的哈希值(md5(text_value))

2)使这个哈希字段为UNIQUE索引

3)在查询中使用INSERT IGnorE

这个解决方案是完整,安全和最佳的吗? (在SO上找到它)

是否有更好的方法来实现这一目标?

解决方法

正如我在评论中被问到如何解决这个问题,我会把它作为回应写出来.

处于这种情况表明应用程序设计存在错误.考虑这意味着什么.

您有一个文本,您无法提前指定长度,并且可能非常长(最多64k),您希望保持唯一性.想象一下,将如此大量的数据拆分为单独的密钥,并组成复合索引以生成唯一性.这就是你要做的.对于整数,这将是16000个整数的索引,以复合索引连接.

进一步考虑CHaraCTER类型字段(CHAR,VARCHAR,TEXT)通过编码进行解释,这进一步使问题复杂化.

我强烈建议以某种方式分割数据.这不仅可以使DBMS免于合并可变长度的字符块,而且还可以为部分数据生成复合键.也许您甚至可以为您的数据找到更好的存储解决方案.

如果您有疑问,我建议发布表格和/或数据库结构,并解释TEXT字段包含的逻辑数据,以及您认为它必须是唯一的原因.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些