1、索引介绍
数据库索引的本质是B+树,原因有以下几点
(1)很适合磁盘存储,能够充分利用局部性原理,磁盘预读
(2)很低的树高度,能够存储大量数据
(3)索引本身占用的内存很小
(4)能够很好地支持单点查询、范围查询、有序性查询
索引分为主键索引和普通索引
二、MyISAM索引
MyISAM索引与行记录是分开储存的,叫做非聚集索引
其主键索引和普通索引没有本质差异
有连续聚集的区域单独存储行记录
主键索引的叶子节点,储存主键,与对应记录的指针
普通索引的叶子节点,储存索引列,与对应行记录的指针
MyISAM索引的表可以没有主键
三、InnoDB索引
InnoDB索引的主键索引与行记录是存储在一起的,叫做聚集索引
没有单独区域存储行记录
主键索引的叶子节点,储存主键,与对应行记录
四、总结
MyISAM和InnoDB都使用B+树来实现索引:
MyISAM的索引与数据分开存储
MyISAM的索引叶子存储指针,主键索引与普通索引无太大区别
InnoDB的聚集索引和数据行统一存储
InnoDB的聚集索引存储数据行本身,普通索引存储主键
InnoDB一定有且只有一个聚集索引
InnoDB建议使用趋势递增整数作为PK,而不宜使用较长的列作为PK