我们通过读和写两个场景分开讨论
读场景:
通过B+树
从根节点开始层序遍历到叶子结点,数据页内部通过二分搜索
普通索引比唯一索引就多了查找和判断下一条记录的操作,如果相同普通索引的数据很多,那么这个查找和判断会进行很多次
所以在读场景唯一索引比普通索引性能要好(只要不经过磁盘,差距不是很大)
写场景:
假如需要在6和15之间插入12索引值
目标页在buffer中
目标页不在buffer中
在数据不在buffer中时,唯一索引需要磁盘加载数据判断数据冲突,这时是随机I/O,性能比较差,而普通索引使用change buffer就可以避免这种随机磁盘访问
所以在写场景中普通索引比唯一索引性能要好
总结: