什么是索引:当你在字典中查找你的名字的时候,你有两种方式。第一、一页一页的翻,第二、通过拼音、笔画,等查找。那么第二种方式就是通过索引的方式查找。那么在myslq中数据库也是这么干的。索引可以增加查询速度,但是同时mysql维护索引也需要耗费性能。
索引的分类:
| 主键索引
如果一个字段为主键(primary key),则mysql会自动在该字段上建立主键索引
| 唯一索引
如果一个字段的值,在整张表中是唯一的,那么就可以在该字段上建立唯一索引,一旦通过唯一索引查找到了数据,就不需要继续查找了,因为它唯一的。它与主键索引的区别是主键索引必须建立在 主键上。
| 普通索引
如果在一个不是主键、其值不是唯一的字段上建立索引,则此类索引就是普通索引。
| 全文索引
如果在某个字段上建立了全文索引,则mysql会将该字段内的值,它认为是关键字的字眼抽取出来,然后对每个关键字建立索引,这就是全文索引。注意:全文索引需要myisam引擎支持。
| 复合索引
我们在建立索引的时候,可以针对多个字段,一起建立索引。当使用多个字段在一起建立索引时,此类索引为复合索引。
建立唯一索引或全文索引:
语法1: create [unique|fulltext] index index_name on table_name (table_ field);
例:地方在goods表的goods_name字段上建立了一个名为goods_name的普通索引。
建立普通索引或复合索引:
语法2:alter tabel table_name add index index_type index_name (field);
例:
查询索引:
语法:
1、show index from table_name;
2、show keys from table_name;
例:
删除索引:
语法1:drop index index_name on table_name;
例:
语法2:alter table table_name drop index index_name;
例:
测试索引效果:
语法:explain select语句;
例:
没有索引的情况:
有索引的情况:
select_type:查询类型,说明
Type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为 const、eq_reg、ref、range、index和ALL