存储结构:B-Tree索引、Hash索引、FULLTEXT全文索引、R-Tree索引
应用层次:普通索引、唯一索引、主键索引、复合索引
键值类型:主键索引、辅助索引(二级索引)
1. 普通索引。
create index <索引名> on tablename (字段名)
alert table tablename add index [索引名字](字段名)
create table tablename ([…], index [索引名字](字段名)) 建表时添加索引
drop index <索引名> 删除索引
show index from tablename;
2. 唯一索引.索引字段值必须唯一,但可以是空值
create unique index
3. 主键索引
primary key
4. 复合索引
在多个列上建立索引。开销更小,可以代替单一索引!
create index <索引名> on tablename (字段名1,字段名2……)
窄索引:列小于等于2
宽索引:列大于2
ps:尽量用窄索引
5. 全文索引
create fulltext index <索引名> on tablename (字段名)
select * from user where match(name) against ('aaa')
-
全文索引必须在字符串、文本字段上建立
-
全索引字段名必须在最小字符和最大字符之间的才会有效。(innodb:3-84,myisam:4-84)
-
全文索引字段值要进行切词处理,按syntax字符进行切割,例如b+aaa,切分成b和aaa
-
全文索引匹配查询,默认使用的是等值匹配,例如a匹配a,不会匹配ab,ac。如果想匹配可以在布尔模式下进行搜索a*
select * from user where match(name) against('a*' in boolean mode);
网友评论