索引相关

优化原理

创建索引的本质是为了减少数据库IO操作的次数,即磁盘读写次数。MySQL的引擎主要有两种方式:MyISAM和InnoDB,本质为两种最常用的两种表结构类型。在5.1版本之后,默认设置改为InnoDB,原因是:InnoDB支持事务、高并发(行级锁原因,同时操作多条数据,互不影响)、主外键等特性,更符合时代需求。

索引按性能来说,主要分成两大类:主键索引和辅助索引。其中,辅助索引主要有普通索引、唯一索引和联合索引等。我们常说的SQL语句优化中尽量不要使用*查询的原因是:一般情况下使用联合索引可以避免回表查询(即当:查询的字段类型<=联合索引中的字段类型+主键时,一次查询就可以满足需求,不需要再根据主键去查询其他数据,专有名词称为:索引覆盖),但是,当字段一多联合索引的价值就大大削弱了。

辅助索引中叶子节点只存有主键数据和辅助索引的字段。

创建索引的几个原则?

1.尽量给容易辨识且频繁查询的字段加索引,少给频繁修改的字段加索引。

2.索引不是越多越好,聚合索引性能应优于创建多个单列索引。

3.避免给单个字段添加多个索引。

从根上理解MYSQL

从根上理解MYSQL从根上理解MYSQL