MySQL索引类型:
索引是一种数据结构,可以是BTREE,RTREE,或者HASH结构.
BTREE适合用于查找某范围内的数据,可以很快的从当前数据找到下条数据.
RTREE常用于查询比较接近的数据.
HASH结构则适用于随机访问的场合,查找每条数据的时间几乎相同.
显然,若要查找某个时间段的数据,用BTREE结构要比HASH结构快得多.
另外还有FULLTEXT(全文)和SPATIAL(空间)这两个索引类型.
查看某个表中存在的索引类型:
USE punbb;
SELECT INDEX_NAME, INDEX_TYPE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME='pb_posts';
INDEX_NAME INDEX_TYPE
PRIMARY BTREE
pb_posts_topic_id_idx BTREE
pb_posts_multi_idx BTREE
pb_posts_multi_idx BTREE
pb_posts_posted_idx BTREE
注:pb_posts是InnoDB类型表,默认索引为BTREE.
SELECT INDEX_NAME, INDEX_TYPE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_NAME='pb_online'
INDEX_NAME INDEX_TYPE
pb_online_user_id_ident_idx HASH
pb_online_user_id_ident_idx HASH
pb_online_ident_idx HASH
pb_online_logged_idx HASH
注:pb_online是MEMORY类型表,默认索引为HASH.
/doc/refman/5.6/en/create-index.html
InnoDB和MyISAM支持BTREE和FULLTEXT索引 ,MEMORY支持HASH和BTREE索引.
CREATE TABLE lookup (id INT) ENGINE = MEMORY;
CREATE INDEX id_index ON lookup (id) USING BTREE;