mysql 索引

一张表很多的字段,每个字段都可以添加索引,合理的添加索引能有效的提高数据库检索效率,反之还会降低检索速度。

什么时候需要添加索引呢

  •   数据量大
  •   用于where
  •   update, insert较少的字段,如果一个表的数据经常变动,那就没有必要添加索引了,频繁的维护索引会使得效率降低
  •   非空字段

 1、查看索引

 "show index from 表名;"  查看某张表所有的索引

1)查看stu表所有索引

mysql> mysql> show index from stu;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name   | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| stu   |          0 | PRIMARY    |            1 | stu_id      | A         |           7 |     NULL | NULL   |      | BTREE      |         |               |
| stu   |          1 | fk_stu_cls |            1 | cls_id      | A         |           3 |     NULL | NULL   | YES  | BTREE      |         |               |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

 

 2、添加索引

"create index 索引名 on table(字段名(长度));"   字段为数值类型可以不用写长度

1)单列索引。给stu表中的name字段添加索引

mysql> create index ind_stu_name on stu(name(10));

2)组合索引,一个组合索引可以包含多个列。给stu表中 name age 字段添加一个索引

mysql> create index ind_stu_name_age on stu(name(10), age);

3)创建表的时候指定索引

create table stu(
    id int auto_increment primary key,
    name varchar(30),
    index ind_name (name(10))
);

4)修改表结构添加

alter table 表名 add 索引类型 索引名 (字段(length));

 

3、删除索引

"drop index 索引名 on 表名;"

1)删除stu表 ind_name 索引

drop index ind_name on stu;

 

posted @ 2018-10-22 10:22  nonzero  阅读(208)  评论(0编辑  收藏  举报