数据库(四)

密集索引和稀疏索引的区别

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

密集索引每个搜索码都对应一个索引数据库(四)
稀疏索引文件只为索引码的某些值建立索引项
数据库(四)

InnoDB和MylSAM区别

Mysql存在两种引擎:InnoDB,MyISAM

MyISAM:
不管是主键索引、唯一键索引或者普通索引,其索引都属于稀疏索引

InnoDB:

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

InnoDB数据跟密集索引是放在一块的,MyISAM数据跟索引是独立的。所以MylSAM的辅助索引也指向主数据值,而InnoDB的辅助索引查找的时候先找到主键,然后再去主键索引查找数据。

索引总结

1.为什么使用索引 ?
   索引能避免全表扫描数据,提升检索数据(如果数据量非常小反而创建索引花费时间长)

2.什么样的信息能够成为索引 ?
   主键、唯一键等数据具备唯一性的都可以成为索引
3.索引的数据结构 ?
   主流B+树还有Hash、BitMap(oracle才有)、B树
4.密集索引和稀疏索引的区别 ?
   密集索引每个搜索码都对应一个索引,稀疏索引只为索引码的某些值建立索引项