数据库—索引

来源:互联网 发布:ipcms录像软件 编辑:程序博客网 时间:2024/06/07 13:44

了解索引

索引的含义:

     索引是一个单独的,存储在磁盘上的数据结构;所有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;