InnoDB;
insert into t(id, name, k) values
(1, 'Java', 100),
(2, 'Python', 200),
(3, 'Go', 300),
(5, 'MySQL...普通索引和唯一索引查询
select * from t where k = 500;
查询语句会在k索引树上的树根开始,按层搜索到叶子节点(点位到右下角的数据页),然后在数据页内部再通过二分法定位记录...,找到300和500之间的位置,判断没有冲突,插入该值,语句执行结束
如果是普通索引,找到300和500之间的位置,插入该值,语句执行结束
假设记录要更新的目标页不在内存中,处理流程如下:
如果是唯一索引...,需要将数据页读入内存,判断没有冲突插入该值,语句结束
如果是普通索引,则将更新记录在change buffer,语句执行结束。...唯一索引和普通索引
唯一索引和普通索引在查询性能上基本没有差别,但在更新上普通索引会快于唯一索引。所以在可以选择普通索引的前提下尽可能选择普通索引。