繁体   English   中英

在性能/实现方面,MySQL中唯一索引和非唯一索引之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM