索引是数据库中⽤来提⾼性能的最常⽤⼯具。
索引类型,并简单介绍了索引的设计原则。在后⾯的优化篇中,将会对索引做更多的 介绍。
1 索引概述
所有MySQL列类型都可以被索引,对相关列使⽤索引是提⾼SELECT操作性能的
最佳途径。根据存储引擎可以定义每个表的最⼤索引数和最⼤索引长度,每种存储引 擎(如 MyISAM、InnoDB、BDB、MEMORY等)对每个表⾄少⽀持16个索引,总索 引长度⾄少为256字节。⼤多数存储引擎有更⾼的限制。
MyISAM和InnoDB存储引擎的表默认创建的都是BTREE索引。MySQL支持对索引字段的前N个字符创建索引。前缀索引 的长度跟存储引擎相关,对于MyISAM存储引擎的表,索引的前缀长度可以达到1000 字节长,⽽对于InnoDB存储引擎的表,索引的前缀长度最长是767字节。请注意前缀 的限制应以字节为单位进⾏测量,⽽CREATE TABLE语句中的前缀长度解释为字符 数。在为使⽤多字节字符集的列指定前缀长度时⼀定要加以考虑。
默认情况下,MEMORY存储引擎使⽤HASH索引,但也⽀持BTREE索引。