查询过程
普通索引:查找满足条件的第一个记录后,接着查找下一个记录,直到查到第一个不满足条件的记录。
唯一索引:由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。
更新过程
为了说明普通索引和唯一索引对更新语句性能的影响这个问题,先介绍一下change buffer
更新一个数据页时,这个数据页还没有在buffer pool时,InooDB会将这些更新操作缓存在change buffer中,下次查询需要访问这个数据页的时候,将数据页读入内存,然后执行change buffer中与这个页有关的操作
如果能够将更新操作先记录在change buffer,可以减少磁盘读写操作,语句(例如,具有大量DML操作的应用程序,例如批量插入)执行速度会得到明显的提升。而且,数据读入内存是需要占用buffer pool的,所以这种方式还能够避免占用内存,提高内存利用率
参考链接:https://dev.mysql.com/doc/refman/8.0/en/innodb-change-buffer.html