mysql 单列索引,组合索引
建立索引的目的: 提高查询效率
1,单列索引:即一个索引只包含单个列,一个表可以有多个单列索引。
当where条件只有一个时,可对其进行单列索引,但,查询多个组合列,即使有多个单列索引,MySQL 只能用他认为最有效率的单列索引来查询
CREATE INDEX indexname ON tablename(colname1(length));
DROP INDEX [indexname] ON tablename;
2,组合索引:即一个索包含多个列。
ALTER TABLE tablename ADD INDEX col1_col1_col3(col1,col2,col3);
eg. 组合索引(col1, col2, col3) 相当于建立了三组索引:①col1; ②col1,col2 ③col1,col2. col3
依据“最左前缀”,并不是只要包含这三列的的查询都会用到这组合索引。
3,建立索引的时机:
一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引(因为以通配符%和_开头作查询时,MySQL不会使用索引)
会使用索引:SELECT * FROM tablename WHERE col1 like‘admin%‘
不会使用: SELECT * FROM tablename WHERE col1 like‘%admin‘