扫码阅读
手机扫码阅读

普通索引 PK 唯一性索引,用哪个好?

15 2024-11-05

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:普通索引 PK 唯一性索引,用哪个好?
文章来源:
江南一点雨
扫码关注公众号

索引选择:唯一性索引与普通索引的比较

在数据库索引类型中,除了全文索引和主键索引,唯一性索引和普通索引的选择也是一个重要考虑。本文将探讨这两种索引的区别,以及在实际应用中的选择。

1. 准备工作

示例表中包含主键索引和两种不同的索引:一个唯一性索引(username)和一个普通索引(address)。表中填充了大量模拟数据。

2. 查询

对于普通索引(address),查询需要在找到第一个满足条件的记录后继续向后扫描,直到遇到不满足条件的记录。查询计划中的 type 显示为 ref,表明分析正确。

而唯一性索引(username)查询时,由于字段值唯一,找到满足条件的第一条记录后即停止搜索。查询计划的 type 显示为 const,说明查询过程更为简洁。

尽管理论上唯一性索引的查询效率更高,实际上由于InnoDB的页式读取和数据的连续性,普通索引的查询速度也很快,差异可忽略。

3. 插入/修改

介绍了buffer pool和change buffer的概念,buffer pool用于减少磁盘IO,而change buffer主要针对非唯一索引的写操作,减少了磁盘IO并提高了数据库性能。

对于非唯一性索引,插入时将数据存入change buffer即可,而唯一性索引则需要检查数据页的唯一性,涉及更多磁盘IO,因此非唯一性索引在插入时有优势。

4. 小结

在实际应用中,是否选择唯一性索引取决于业务需求和对数据唯一性的保证。如果业务能够保证字段的唯一性,普通索引可以提供更快的插入/更新速度。但也需要考虑对于可能出现的数据不一致问题的容忍度。

想要了解更多内容?

查看原文:普通索引 PK 唯一性索引,用哪个好?
文章来源:
江南一点雨
扫码关注公众号