【面试官挖坑】聚集索引会隐式的自动为表添加一个主键索引那你是不是就可以不设置主键索引了?

简介: 【面试官挖坑】聚集索引会隐式的自动为表添加一个主键索引那你是不是就可以不设置主键索引了?

面试官喜欢诱导挖坑,首先问你聚集索引是什么?和主键索引有什么关联?

你可能回答:聚集索引会自动地为表添加一个主键索引,这是一个隐式的操作。如果表中没有明确的主键,则聚集索引将会选择一个唯一的索引列或一组列作为主键。

面试官接着坑你:既然没有明确主键,那我岂不是可以不用设置主键,反正没有明确主键也会选择一个唯一的索引作为主键,也何必多次一举呀?

你一想,唉,有点道理哈,不对,总感觉哪里不对,我又说不上来,但我知道肯定不是这样的,这个面试官有点腹黑呀?咋办呢?在线求救。。。

事后你回去查资料发现一堆的反驳观点可以说:

数据库中,聚集索引(Clustered Index)和主键索引(Primary Key Index)都是常用的索引类型,它们都可以提高查询效率。然而,它们之间有一些性能上的区别:

首先二者性能的区别:

排序方式:聚集索引按照表中数据的物理位置进行排序,主键索引则根据指定的列或组合列的值进行排序。因此,聚集索引的排序成本可能更高,特别是当数据量很大时。

索引大小:聚集索引通常比主键索引更大,因为它需要存储整个数据行的信息。而主键索引只存储主键的值和指向数据行的指针。

查询性能:在查询时,聚集索引可以直接访问数据行,因此查询效率更高。而主键索引需要先通过索引找到数据行的指针,然后再通过指针访问数据行。如果表中有大量的数据行,这可能会导致查询效率降低。

更新性能:当插入或删除数据时,聚集索引的维护成本可能更高。因为聚集索引需要重新排列数据,以保持物理位置的连续性。而主键索引则不需要进行这种重新排列。

其次自动添加的主键索引是基于表中的数据自动选择的,而手动添加的主键索引是开发人员根据需要指定的。

最后,自动添加的主键索引可能并不符合特定的查询需求,而手动添加的主键索引可以根据查询需求进行优化。


相关文章
|
2月前
|
SQL 存储 关系型数据库
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
索引下推是MySQL 5.6引入的优化,允许部分WHERE条件在索引中处理,减少回表次数。例如,对于索引(zipcode, lastname, firstname),查询`WHERE zipcode='95054' AND lastname LIKE '%etrunia%'`时,索引下推先过滤zipcode,然后在索引中应用lastname条件,降低回表需求。索引下推可在EXPLAIN的`Using index condition`中看到。
对线面试官 - 如何理解MySQL的索引覆盖和索引下推
|
2月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
194 0
|
5月前
|
存储 关系型数据库 MySQL
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
354 0
【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?
|
2月前
|
存储 SQL 关系型数据库
索引和事务究竟是何方神圣?那可是面试中的常客!
索引和事务究竟是何方神圣?那可是面试中的常客!
43 1
索引和事务究竟是何方神圣?那可是面试中的常客!
|
3月前
|
存储 数据库 索引
面试题 16: 什么是数据库索引
面试题 16: 什么是数据库索引
面试题 16: 什么是数据库索引
|
4月前
|
SQL 关系型数据库 MySQL
面试题:mysql在项目里有没有用到索引,哪些字段用了,哪些字段为什么不用
面试题:mysql在项目里有没有用到索引,哪些字段用了,哪些字段为什么不用
24 0
|
4月前
|
人工智能 索引
面试题 08.03:魔术索引
面试题 08.03:魔术索引
21 0
|
5月前
|
存储 安全 大数据
大数据面试题百日更新索引目录
大数据面试题百日更新索引目录
19 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL中的索引事务(2)事务----》数据库运行的原理知识+面试题~
MySQL中的索引事务(2)事务----》数据库运行的原理知识+面试题~
39 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL中的索引事务(1)索引----》数据库运行的原理知识+面试题~
MySQL中的索引事务(1)索引----》数据库运行的原理知识+面试题~
28 0