首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法创建一个字符串的“签名”,以确保字符串是唯一的?或者我应该使用唯一的DB索引?

问有没有办法创建一个字符串的“签名”,以确保字符串是唯一的?或者我应该使用唯一的DB索引?
EN

Stack Overflow用户
提问于 2011-03-23 17:17:59
回答 1查看 595关注 0票数 0

我在建一个网站。用户可以提交"Title“,它是unicode字符串(不仅仅是英文)。

当用户提交“标题”时,我想看看它是否已经在数据库中(MySQL)。如果是,我只需要更新现有的记录。如果它是一个新的“标题”,我会为它创建一个新的记录。

我想测试唯一性的标准方法是在"Title“列上创建一个索引。但我担心这样的索引的大小,因为"Title“可能会很长。

所以我想知道是否有一种方法可以创建"Title“的”签名“,并使用它来测试唯一性?是否有一些散列函数可以将unicode字符串散列为唯一的值?

任何指针都将非常感谢。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-23 17:34:30

简单的答案是使用一个MySql散列函数(MD5 SHA1)来创建每个标题的散列,并将其与标题本身一起存储。

然后,您可以对散列值进行索引,这将产生更好、更快的索引。

这些基本上都是加密函数,会占用大量的cpu,但是您的语言环境可能会提供一个更简单、更快的散列,比如crc32。

这也值得把你的“标题”通过清理后再散列ie。将多个空格强制转换为一个空格,将所有字符折叠为小写,删除标点符号etc.etc。

所以"STACKOVERLOW很棒......“和"stackoverflow是伟大的“导致相同的散列。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5403015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档