老师你好,数据库索引方面的问题,帮忙解答下,问题描述如下:
课程中你提到,mysql InnoDB是以主键id来维护并创建的聚集索引树的,并建议主键id是递增的,这样可以提高数据插入的性能,因为递变的id可以减少在数据插入时导致的索引块拆分,我这里有两个问题一直想的不太明白:
1、就算是递增的id作为主键,插入数据时,当一个索引块存储满了,不也会引起索引块的拆分操作吗?这个递增的主键id是怎么增加数据的插入性能的呢?
2、表中如果还存在其它普通索引的话,那么这些索引对应的就都是非聚集索引,而且这些普通索引对应的列一般都是不能保证每次数据插入都递增的字符串,或者说每次插入的数据都是不能保证顺序的,不能像自增的主键id那样每次都是递增新插入一个,所以我感觉这个普通索引树仍然会存在插入记录时的性能问题,比如会导致索引块的拆分、旋转等复杂的索引树调整,但是现实中也没遇到这些性能问题啊,这不是跟使用随机的id作为数据库的主键一个道理了吗,难道是我理解错了?