索引的概念
索引是数据的目录,能快速定位数据的位置。索引提高了查询速度,降低了增删改的速度。并非加的越多越好。
一般在查询频率高的列上加,而且在重复度低的列上加效果更好。如在性别列上不用加索引,但是身份证号列上就可以加索引。
key 普通索引,就是为了加快查询速度。
unique key 唯一索引 加快速度并且约束数据。
primary key 主键索引
fulltext 全文索引
全文索引在中文情况下几乎无效。要分词+索引,一般用第三方解决方案,如sphinx
create table t16
(
id int,
name char(10),
email char(20),
primary key(id), #主键索引
key name(name),
unique key email(email)
);
索引长度:建索引时,可以只索引列的前一部分的内容,比如前10个字符
如 unique key email(email(10))
create table t17
(
id int,
name char(10),
email char(20),
primary key(id), #主键索引
key name(name),
unique key email(email(10))
);
多列索引
create table t18
(
xing char(2),
ming char(10),
key xm(xing,ming)
);
创建表,插入数据
mysql> insert into t18 values
-> (\'朱\',\'元璋\');
Query OK, 1 row affected (0.52 sec)
上面两种情况下,索引都可以发挥作用。
上面这种情况,索引没有发挥作用。
左前缀规则,索引可以发挥作用。
索引的操作
查看 show index from 表名
删除 alter table 表名 drop index 表名
或 drop index 索引名 on 表名
添加索引
alter table 表名 add [index/unique] 索引名(列名);
添加主键索引