普通索引和唯一索引的区别
查询区别: 在innodb索引组织结构下,使用普通索引查询和使用唯一索引查询差别不大,普通索引和唯一索引都是使用B+Tree,不同的是普通索引使用等值查找法,直到查到不符合的数据为止,而唯一索引因为定义了唯一性,在查找到第一个满足条件的数据后就停止。 更新区别: 当更新数据在内存中时: 普通索引:在change buffer中记录更新 唯一索引:直接在内存中更新数据 当更新数据不再内存时: * 普通索引: 将更新记录进change buffer,结束;change buffer会定期merge到原数据页,在访问该数据页时也会发生merge,在数据库关闭时也会触发merge。 change buffer,实际上它是可以持久化的数据。也就是说,change buffer 在内存中有拷贝,也会被写入到磁盘上。将 change buffer 中的操作应用到原数据页,得到最新结果的过程称为 merge。除了访问这个数据页会触发 merge 外,系统有后台线程会定期 merge。在数据库正常关闭(shutdown)的过程中,也会执行 merge 操作。显然,如果能够将更新操作先记录在 ....