(1)关于存储引擎创建合适的索引是SQL性能调优中最重要的技术之一。在学习创建索引之前,首先要了解MySql的架构细节,包括它在硬盘上是如何组织的,索引和内存的使用和操作,以及存储引擎的差异如何影响索引的选择。MySQL的衍生版本很多,这些衍生版本支持的存储引擎也更多、种类更多。本文主要讨论三种MySQL引擎。MyISAM是一种非事务性存储引擎,是MySQL5.5之前版本的默认存储引擎。InnoDB最新的事务存储引擎从5.5版本开始成为MySQL的默认引擎。内存是内存中的、非事务性的、非持久性的存储引擎。注意:从5.5版本开始,MySQL表的默认存储引擎由MyISAM改为InnoDB,这对安装依赖默认设置或者专门为MyISAM编写的包的用户影响很大。(2)MySQL索引类型MySQL支持在所有关系数据库表中创建主键、唯一键、非唯一非主键索引等多种类型的索引。此外,MySQL还支持纯文本和空间索引类型。MySQL内置的存储引擎对各种索引技术有不同的实现,包括:B-tree、B+tree、R-tree和hash类型。索引数据结构理论:1.B-treeB-tree中有两种节点类型:索引节点和叶节点。叶子节点用来存储数据,索引节点用来告诉用户叶子节点存储的数据顺序,帮助用户找到对应的数据。B-tree的查找是从根节点开始,依次对节点中的关键字进行二分查找。如果是***则结束,否则进入查询关键字范围的子节点,重复。直到对应的子指针为空,或者已经是叶节点。B树是一种多路搜索树:(1).定义任意一个非叶子节点至多有M个儿子,且M>2;(2).根节点的儿子个数为[2,M];(3)。除根节点外的非叶节点的儿子数为[M/2,M];(4).每个节点至少存储M/2-1(向上取整),至多M-1个关键字;(5).非叶子节点的关键字个数=子节点指针个数-1;(6).非叶子节点的关键字:k[i]
