[英]Difference between unique and non-unique index in mysql in terms of performance/implementation
我有一个简单的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
表用于什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.