SQL索引的原理及优化策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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索引的原理及优化策略的主要内容,如果未能解决你的问题,请参考以下文章

sql索引优化

sql优化及原理详解,五分钟读懂sql优化

MySQL索引原理及慢查询优化

MySQL索引原理及慢查询优化

MySQL索引原理及慢查询优化

mysql索引使用策略及优化