MEMORY 存储引擎的表可以选择使用BTREE 索引或者HASH 索引,两种不同类型的索引
各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所
示。
只用于使用=或<=>操作符的等式比较。
优化器不能使用HASH 索引来加速ORDER BY 操作。
MySQL 不能确定在两个值之间大约有多少行。如果将一个MyISAM 表改为HASH 索
引的MEMORY 表,会影响一些查询的执行效率。
只能使用整个关键字来搜索一行。
而对于BTREE 索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其
中'pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。
各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所
示。
只用于使用=或<=>操作符的等式比较。
优化器不能使用HASH 索引来加速ORDER BY 操作。
MySQL 不能确定在两个值之间大约有多少行。如果将一个MyISAM 表改为HASH 索
引的MEMORY 表,会影响一些查询的执行效率。
只能使用整个关键字来搜索一行。
而对于BTREE 索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其
中'pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。