InnoBD引擎使用了B+树索引模型,所以MySQL的数据都是放在B+树上的。
每一个索引都对应一个B+树。
一个表上如果有多个索引,那就会有多个B+树。
索引分为两种:主键索引(聚簇索引)和普通索引(二级索引)。
主键索引(聚簇索引):
key-主键的值,value-整行数据。
普通索引(二级索引):
key-索引列的值,value-主键的值。
使用普通索引进行查询时,会有回表现象。
根据普通索引得到主键值,再去根据主键索引进行查询。
数据库优化:
1. 项目允许的话,尽量使用自增主键(自增主键新增的时候只做追加操作,防止出现页分裂)。
2. 查询操作尽量使用主键查询(只查询一个B+树)。
3. 删除尽量使用逻辑删除,而不是物理删除(减少出现页合并的现象)。
4. 当要使用业务字段作为主键时,保证只有一个索引存在,并且当前索引是唯一的。