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

本文详细介绍了MySQL中索引的概念、类型和常见数据结构,包括B+TREE、HASH、RTREE和FULLTEXT索引。讨论了主键、唯一、普通、组合及全文索引的创建、修改和删除方法,并提供了相应的SQL语句示例。通过理解这些索引,可以显著提升数据库查询性能。
摘要由CSDN通过智能技术生成

索引在 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的索引类型及创建维护

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值