我有一个简单的INNODB mysql表sql_statements
id, text, sha1
id - primary key
text - variable length strings.
sha1 - SHA1 hash of the text
文本列包含SQL查询文本的字符串,如"select * from abc","insert into…",…
我在sha1列上有一个唯一的索引,以便快速搜索具有给定文本的sql_statements。
然而,设计的一个限制是我们不能插入具有相同sha1哈希值的2行。
为了解决这个问题,我正在考虑使索引非唯一。
mysql中唯一索引和非唯一索引在性能方面有什么区别?两者都是作为b树实现的,所以我猜性能应该是相似的。
谢谢。
使用unique
约束,查询计划可以优化为在第一次匹配时停止。所以使用唯一索引可能会更快。
如果您对语句列上的相等查询感兴趣,那么我建议在该列上使用哈希索引,并删除您自己的哈希列。
在任何情况下,当列不是唯一时,我都不会为了性能而使用一些唯一约束,因为这是完全错误的。此外,我很好奇您的sql_statements
表是用来做什么的。