索引的类型
索引是由存储引擎来实现的,而不是在服务层,所以不同的引擎的索引的工作方案可能会有不同,支持的索引种类也不尽相同等等。
B-Tree Indexes
B-Tree索引中,所有的值都是按顺序来排列的,这让它很适合查询一个范围里的数据。
假设你有如下表:
CREATE TABLE People ( last_name varchar(50) not null, first_name varchar(50) not null, dob date not null, gender enum(‘m‘, ‘f‘)not null, key(last_name, first_name, dob) );
以下查询会使用到B-Tree索引
全值匹配(Match the full value):如查找一个出生于1960-01-01名叫Cuba Allen的人
左前缀匹配(Match a leftmost prefix):如查找一个叫Allen的人,只对第一列有效
列前缀匹配(Match a column prefix): 如查找所有姓以J开头的人,只对第一列有效
范围匹配(Match a range of values): 如查找Allen到Barrymore之间的人,只对第一列有效
Match one part ane match a range of another part:如查找姓为Allen,名字以K打头的人
B-Tree的局限
所有有时为了优化查询,会创建好几种不同顺序的B-Tree索引,来克服这些缺点。
原文:http://www.cnblogs.com/hugmyloneliness/p/3638273.html