首页 > 代码库 > SQL索引的原理及优化策略

SQL索引的原理及优化策略

之前小公司数据量比较小,没有积累相关的经验,面试了个大公司被问尿了。

问题:用没用过索引?有没有数据库优化经验?

先从索引的原理开始看起。

优质文章传送门:http://blog.codinglabs.org/articles/theory-of-mysql-index.html

我做下自己的重点总结:

1.myISAM引擎和InnoDB都使用B+Tree结构的索引。

2.B+Tree叶结点存储数据并指向相邻的叶结点方便范围查找。

3.myISAM的B+树叶结点存储的是数据地址,顾称为非聚集索引。

4.InnoDB的B+树叶节点直接存储的是数据,顾称为聚集索引。

5.InnoDB的要求表拥有唯一的主键,没有指明则找表内唯一性列,如果找不到就生成一个隐含字段,6字节,长整型。

6.InnoDB的辅助索引存储的是主键的值。

了解到基本原理可以总结出几条优化建议:

1.主键的单调性,主键随机生成会导致维护B+树频繁的分裂调整,降低性能。

2.所有的辅助索引都会引用主键,所以主键太长会使辅助索引过大。

SQL索引的原理及优化策略