微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

保持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字段包含的逻辑数据,以及您认为它必须是唯一的原因.

原文地址:https://www.jb51.cc/html/231363.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐