面试官喜欢诱导挖坑,首先问你聚集索引是什么?和主键索引有什么关联?
你可能回答:聚集索引会自动地为表添加一个主键索引,这是一个隐式的操作。如果表中没有明确的主键,则聚集索引将会选择一个唯一的索引列或一组列作为主键。
面试官接着坑你:既然没有明确主键,那我岂不是可以不用设置主键,反正没有明确主键也会选择一个唯一的索引作为主键,也何必多次一举呀?
你一想,唉,有点道理哈,不对,总感觉哪里不对,我又说不上来,但我知道肯定不是这样的,这个面试官有点腹黑呀?咋办呢?在线求救。。。
事后你回去查资料发现一堆的反驳观点可以说:
在数据库中,聚集索引(Clustered Index)和主键索引(Primary Key Index)都是常用的索引类型,它们都可以提高查询效率。然而,它们之间有一些性能上的区别:
首先二者性能的区别:
排序方式:聚集索引按照表中数据的物理位置进行排序,主键索引则根据指定的列或组合列的值进行排序。因此,聚集索引的排序成本可能更高,特别是当数据量很大时。
索引大小:聚集索引通常比主键索引更大,因为它需要存储整个数据行的信息。而主键索引只存储主键的值和指向数据行的指针。
查询性能:在查询时,聚集索引可以直接访问数据行,因此查询效率更高。而主键索引需要先通过索引找到数据行的指针,然后再通过指针访问数据行。如果表中有大量的数据行,这可能会导致查询效率降低。
更新性能:当插入或删除数据时,聚集索引的维护成本可能更高。因为聚集索引需要重新排列数据,以保持物理位置的连续性。而主键索引则不需要进行这种重新排列。
其次自动添加的主键索引是基于表中的数据自动选择的,而手动添加的主键索引是开发人员根据需要指定的。
最后,自动添加的主键索引可能并不符合特定的查询需求,而手动添加的主键索引可以根据查询需求进行优化。