1. BTREE索引 和 HASH 索引 各有自己的适用范围,尤其是HASH索引会有其不适用的地方。
2. HASH索引
a. 范围查询 比如 > , < ,Between , like 等是不适用HASH索引,仅仅= 和 <=> ,IN是适用的。
b. 优化器不能适用HASH索引来加速ORDER BY操作
c. 只能使用整个关键字来搜索一行
实例:
IN 范围查询 使用BTREE 和 HASH
SELECT * FROM t1
WHERE key_col=1 OR key_col IN (15,18,20);
注1:
不使用索引,MySQL必须从第1条记录开始然后开始读完整个表直到找出相关行。表越大,花费的时间越多。
第