mysql 索引维护_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));//主键设置

2、单独设置主键

alter table teacher add primary key (id);

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)));//唯一索引

2、单独建唯一索引

create unique index idx_phone on teacher(phone(11));

drop index idexName on tableName;//删除索引

3、修改建唯一索引

alter table teacher add unique idx_phone (phone(11));

普通索引

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)));//普通索引

2、单独建普通索引

create index idx_phone on teacher(phone(11));

3、修改普通索引

alter table teacher add index idx_phone (phone(11));

组合索引

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)));//组合索引

2、单独建组合索引

create index idx_name_phone on teacher (name(20),phone(11));

3、修改组合索引

alter table teacher add index idx_name_phone (name(20),phone(11));

全文索引

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)));//全文索引

2、单独建全文索引

create fulltext index idx_phone on teacher(phone(11));

3、修改全文索引

alter table teacher add fulltext index idx_phone (phone(11));

原文链接:https://blog.youkuaiyun.com/weixin_29185493/article/details/113266153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值