MySQL(三)索引----BTREE 索引与 HASH 索引

MEMORY 存储引擎的表可以选择使用 BTREE 索引或者 HASH 索引,两种不同类型的索引
各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所

  1. 只用于使用=或<=>操作符的等式比较。(=跟<=>的区别,主要是,<=>可以与null比较,null=null为null,而null<=>null,为true)
  2.  优化器不能使用 HASH 索引来加速 ORDER BY 操作。
  3.  MySQL 不能确定在两个值之间大约有多少行。如果将一个 MyISAM 表改为 HASH 索
  4. 引的 MEMORY 表,会影响一些查询的执行效率。
  5. 只能使用整个关键字来搜索一行。

而对于 BTREE 索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者 LIKE 'pattern'(其
中'pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。

 下列范围查询适用于 BTREE 索引和 HASH 索引(in查询):

SELECT * FROM t1 WHERE key_col = 1 OR key_col IN (15,18,20);

下列范围查询只适用于 BTREE 索引:

SELECT * FROM t1 WHERE key_col > 1 AND key_col < 10;
SELECT * FROM t1 WHERE key_col LIKE 'ab%' OR key_col BETWEEN 'lisa' AND 'simon';

猜你喜欢

转载自blog.csdn.net/qq_41907991/article/details/84842975