Mysql : BTREE 索引与HASH 索引

        BTREE 索引与HASH 索引,两种不同类型的索引各有其不同的适用范围。HASH 索引有一些重要的特征需要在使用的时候特别注意,如下所示:
                1.只用于使用=或<=>操作符的等式比较。
                2.优化器不能使用HASH 索引来加速ORDER BY 操作。
               3.其MySQL 不能确定在两个值之间大约有多少行。如果将一个MyISAM 表改为HASH 索引的MEMORY 表,会影响一 些查询的执行效率。

                4.只能使用整个关键字来搜索一行。而对于BTREE 索引,当使用>、<、>=、<=、BETWEEN、!=或者<>,或者LIKE 'pattern'(其中'pattern'不以通配符开始)操作符时,都可以使用相关列上的索引。

    

         索引用于快速找出在某个列中有一特定值的行。如果不使用索引,MySQL 必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL 能快速到达一个位置去搜寻数据文件的中间,没有必要看所有数据。如果一个表有1000 行,这比顺序读取至少快100 倍。注意如果需要访问大部分行,顺序读取要快得多,因为此时应避免磁盘搜索。