不同的存储引擎默认的索引模式是不一样的,InnoDB 和 MyISAM 使用的索引模式默认是B树索引,MEMORY 默认使用散列索引。
对于散列索引,会有一个散列函数来依次处理每一个数据列值。结果散列值将被存入该索引并用来进行查询。(散列函数采用的算法会尽量为不同的输入值生成不同的散列值,使用散列索引值的好处是他们之间的比较比其原始值更有效率)散列索引在使用“=” 或者 “<=>” 操作符进行的精确匹配比较操作里速度极快,但它们用来查找一个范围的比较操作里表现不佳,例如下面这些表达式:
id < 30
weight between 100 and 150
B树索引在使用 <,<=,=,>=,<>,!=和between 操作符进行的精确比较操作或范围比较操作里都很有效率。如果匹配模式是以一个纯字符串而不是一个通配符开头的话,“B树”索引还可以用于like操作符进行的模糊匹配模式操作。