了解索引
索引的含义:
索引是一个单独的,存储在磁盘上的数据结构;所有Mysql类型都可以被索引,对相关列使用索引可以提高查询操作速度
索引是存储在引擎中实现的;每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定指出所有索引类型
索引的优点:
1.通过创建唯一索引,可保证数据库表中每一行数据的唯一性
2.可以大大加快数据的查询速度
3.在实现数据的参考完整性方面,可加速表和表之间的连接
4.在使用分组和排序子句进行查询时,也可减少查询中分组和排序的时间
索引的缺点:
1.创建和维护索引需要耗费时间
2.如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸
3.当对表中的数据进行增加、删除和修改的时候,索引也需要动态的维护,这样就降低了数据的维护速度
索引的使用准则:
1.索引并非越多越好
2.避免对经常更新的表进行过多的索引
3.数据量小的表最好不要使用索引
4.在条件表达式中经常用到的不同值较多的列上建立索引,在不同值少的列上不要建立索引
5.当唯一性是某种数据本身的特征时,指定唯一索引
索引的分类及使用:
创建普通索引:
# 在已有表中创建索引 add-index关键字 idIndex索引名称 (id)根据什么创建索引
alter table student add index idIndex(id);
# 在创建表时创建索引
create table book(bookid int not null,bookname varchar(255) not null,author varchar(255) not null,info varchar(255),comment varchar(255),year_publicatoon year not null,index(year_publicatoon));
创建唯一索引:
# 创建唯一索引 unique-index关键字
create table tb1(id int not null,name char(30) not null,unique index UniqIdx(id));
创建单列索引:
# 创建单列索引
create table tb2(id int not null,name char(20) not null,index DLIdx(name));
创建组合索引:
# 创建组合索引
create table tb3(id int not null,name char(20) not null,age int not null,phone float,index ZHidx(id,name,age));
创建全文索引:
创建全文索引需要指定引擎:
查看索引:
# 查询索引 KEY `idIndex` (`id`)
show create table student;
explain select * from book where year_publicatoon=2000;
删除索引:
# 删除索引
方式1:
alter table student drop index idIndex;
方式2:
drop unique index UniqIdx on tb1;