剑指Offer(SQL)——密集索引和稀疏索引

剑指Offer(SQL)——密集索引和稀疏索引
密集索引和稀疏索引的区别:

  1. 密集索引文件中的每个搜索码值都对应一个索引值
  2. 稀疏索引文件中只为索引码的某些值建立索引项

接下来以MySQL为例说明:
在mysql中有两种搜索引擎:MyISAM和InnoDB

MyISAM引擎:
不管是主键索引,唯一键索引还是普通索引,其索引都属于稀疏索引。

InnoDB引擎:

  1. 若一个主键被定义,该主键则作为密集索引
  2. 若没有主键被定义,该表的第一个唯一非空索引则作为密集索引
  3. 若不满足以上条件,InnoDB内部会生成一个隐藏主键(密集索引)
  4. 非主键索引存储相关键位和其对应的主键值,包含两次查找
    剑指Offer(SQL)——密集索引和稀疏索引