看到有一种解释是:
因为插入要保证主键唯一性,聚集索引和非聚集索引都要遍历每一个叶子节点,但非聚集索引的叶子节点不包含数据只有数据的指针所以占用空间小,io次数自然更少,便利速度更快
如果每次插入都要便利每一个叶子节点岂不是相当于做了一次全表扫描,速度巨慢,这就又引出了第二个问题
看到有一种解释是:
因为插入要保证主键唯一性,聚集索引和非聚集索引都要遍历每一个叶子节点,但非聚集索引的叶子节点不包含数据只有数据的指针所以占用空间小,io次数自然更少,便利速度更快
如果每次插入都要便利每一个叶子节点岂不是相当于做了一次全表扫描,速度巨慢,这就又引出了第二个问题
既然叫索引,那就是牺牲空间来换时间的,本质上是维护一个有序队列,这样查询时不需要遍历,二分法就行了。
当然这样做除了要耗费很多硬盘空间来存索引,插入时也要消耗额外的时间来维护队列的有序性,换来的是查询时大幅减少时间。