MySQL 的索引类型及如何创建维护

索引在MySQL中特别重要,用好了可以很大提升MySQL的性能。

索引的定义

是一种可以帮助MySQL高效获取数据的数据结构,也可以说是一种排好序的快速查找数据结构。
主要有以下几种数据结构:
1. B+TREE 索引(也叫BTREE或B-TREE,默认及最常用的)
2. HASH 索引
3. RTREE 索引
4. FULLTEXT(全文索引)

索引的种类

1. 主键索引
2. 唯一索引
3. 普通索引
4. 组合索引
5. 全文索引

语句

常用以下两种方式:
1. CREATE [UNIQUE|FULLTEXT] INDEX [indexName] ON tableName(columnname(length))
2. ALTER TABLE tableName ADD [UNIQUE|FULLTEXT] INDEX [indexName] (colummnname(length))
备注:
也可以在创建表的同时建索引
* unique|fulltext为可选参数,分别表示唯一索引、全文索引
* columnname为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
* indexName指定索引的名称,为可选参数,如果不指定,默认colummnname为索引值
* length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度

不同类型的索引创建维护

主键索引

1、创建表同时设置主键
create table teacher(
-> id int(10) auto_increment,
-> name varchar(20),
-> age int(10),
-> phone varchar(11),
-> primary key (id));//主键设置

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

2、单独设置主键
alter table teacher add primary key (id);

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

desc tableName;//显示表的结构
show index from tableName \G //查看表的索引情况

唯一索引

1、创建表同时建唯一索引
create table teacher(
    -> id int(10) auto_increment,
    -> name varchar(20),
    -> age int(10),
    -> phone varchar(11),
    -> primary key (id),
    -> unique index idx_phone(phone(11)));//唯一索引

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

2、单独建唯一索引
create unique index idx_phone on teacher(phone(11));

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

drop index idexName on tableName;//删除索引
3、修改建唯一索引
alter table teacher add unique idx_phone (phone(11));

MySQL的索引类型及创建维护

普通索引

1、创建表同时建普通索引
create table teacher(
    -> id int(10) auto_increment,
    -> name varchar(20),
    -> age int(10),
    -> phone varchar(11),
    -> primary key (id),
    -> index idx_phone (phone(11)));//普通索引

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

2、单独建普通索引
create index idx_phone on teacher(phone(11));

MySQL的索引类型及创建维护

3、修改普通索引
alter table teacher add index idx_phone (phone(11));

MySQL的索引类型及创建维护

组合索引

1、创建表同时建组合索引
create table teacher(
    -> id int(10) auto_increment,
    -> name varchar(20),
    -> phone varchar(11),
    -> primary key (id),
    -> index idx_name_phone (name(20),phone(11)));//组合索引

MySQL的索引类型及创建维护

2、单独建组合索引
create index idx_name_phone on teacher (name(20),phone(11));

MySQL的索引类型及创建维护

3、修改组合索引
alter table teacher add index idx_name_phone (name(20),phone(11));

MySQL的索引类型及创建维护

全文索引

1、创建表同时建全文索引
create table teacher(
    -> id int(10) auto_increment,
    -> name varchar(20),
    -> age int(10),
    -> phone varchar(11),
    -> primary key (id),
    -> fulltext index idx_phone(phone(11)));//全文索引

MySQL的索引类型及创建维护

MySQL的索引类型及创建维护

2、单独建全文索引
create fulltext index idx_phone on teacher(phone(11));

MySQL的索引类型及创建维护

3、修改全文索引
alter table teacher add fulltext index idx_phone (phone(11));

MySQL的索引类型及创建维护

本作品采用《CC 协议》,转载必须注明作者和本文链接
阿德
本帖由系统于 4年前 自动加精
zhangdeTalk
讨论数量: 1

刚好用得上 :+1:

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!