Mysql第九章小结--索引

目录

  • 索引简介
  • 索引分类
  • 索引设计原则
  • 创建索引
  • 删除索引

索引简介

索引是对数据表中一列或者多列的值进行排序的结构,使用索引可以提高对数据表中特定的数据的查询速度。
这里写图片描述


索引分类

  • 普通索引,唯一索引
  • 单列索引,组合索引
  • 全文索引
  • 空间索引
    这里写图片描述
    这里写图片描述

索引设计原则

这里写图片描述

创建索引

在创建表的时候创建索引

这里写图片描述

  • 创建普通索引
create table book(  
    bookid int not null,
    bookname varchar(255)not null,
    authors varchar(255) not null,
    info varchar(255)null,
    comment varchar(255)null,
    year_publication year not null,
    index(year_publication) #直接创建普通的索引
);

使用命令查看索引
这里写图片描述
使用explain查看索引是否正在使用
这里写图片描述

  • 创建唯一索引
create table t1(
    id int not null,
    name char(30) not null,
    unique index UniqIdx(id) #在id列上创建唯一索引
);

也可以使用命令查看索引是否已经被创建以及是否被使用。

  • 创建单列索引
create table t2(
    id int not null,
    name char(50)null,
    index SingleIdx(name(20)) #创建索引长度为20的单列索引
);
  • 创建组合索引
create table t3 (
    id int not null, 
    name char(30) not null, 
    age int not null, 
    info varchar(255), 
    index MultiIdx(id,name)
);


  • 创建全文索引

只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR,VARCHAR和TEXT列创建索引
create table t4(
    id int not null,
    name char(30) not null,
    age int not null,
    info varchar(255),
    fulltext index FullTxtIdx(info)
)engine = MyISAM;


  • 创建空间索引

创建空间索引也只能在储存引擎为MyISAM中的引擎才能创建,不然会报错,而且创建索引的列必须非空。

在已经存在的表上创建索引

可以使用命令查看已经创建的索引
这里写图片描述
这里写图片描述

使用alter table在bookname字段上添加索引

扫描二维码关注公众号,回复: 2232606 查看本文章
 alter table book add index 
 BKNameIdx(bookname(30));

创建唯一索引

alter table book add unique 
index UniqidIdx (bookId);

创建全文索引和创建组合索引以及空间索引和前面类似。

使用create index 创建索引

先创建一个book2表

create table book2( 
        bookid int not null,
        bookname varchar(255)not null,
        authors varchar(255) not null,
        info varchar(255)null,
        comment varchar(255)null,
        year_publication year not null
);

然后创建索引

create index BkNameIdx on book2(bookname); 
#在book2表中的bookname字段上建立名为BkNameIdx的普通索引

创建唯一索引

create unique index UniqieIdx on
book2(bookId);#在book2上建立唯一索引

同理,组合索引,全文索引,空间索引类似。


删除索引

使用alter table删除索引

alter table book drop index UniqidIdx;
#删除book表上的UniqidIdx索引

使用drop index语句删除索引

drop index BKNameIdx on book;
#删除book表上的BKNameIdx索引

猜你喜欢

转载自blog.csdn.net/zxzxzx0119/article/details/80274524