mysql 索引

索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系的数据结构,通过索引查询可以提高查询的效率。

举个例子:

把一个数据表当做一个图书馆,数据表中的一行数据当做一本书,在没有索引的情况下,想要找某一本书时,几乎需要将整个图书馆的书找一遍。当建立了索引后,就类似于将所有书籍按类型放到指定的书架上。当需要找书时,先找该书类型的书架,再找到该书籍。从而大大提高查询效率。

 

索引的优点:

提高查询效率

索引的缺点:

1、索引需要占用磁盘空间

2、对表数据进行增删改操作时,因为要维护索引,速度会收到影响

 

mysql Innodb存储引擎的索引类型:

主键索引

在建立主键时,数据库会自动为该主键字段建立索引(一个表中只能创建一个主键索引),因此主键索引也不允许为空值。

唯一索引

索引字段的值必须是唯一,允许含有空值,如果是组合索引,多字段之间的组合值也必须是唯一。

普通索引

普通索引也称为单列索引,即一个索引值包含单个列

组合索引

同时将几个字段设置为一个索引

全文索引

全文索引类型为fulltext,可以在字段类型为charvarcharttext列上创建全文索引。在定义索引的列上支持值的全文查找,需配合match against操作使用,而不是一般的where like语句结构,它更像是搜索引擎。在mysql MYISAM存储引擎支持全文索引。

 

索引创建:

创建主键索引:

create table account 
(
id varchar(30) primary key not null ,
name varchar(50) not null ,
phone varchar(11) 
);

查询表索引:

show index from account ;

 

 

创建唯一索引:

1、直接创建

语法结构:create unique index indexName on table_name(column_name(length))
indexName 自定义索引名称
table_name 表名
column_name 字段名
length 索引长度,在文本类型需要指定索引长度

create unique index name_index on account(name);

2、修改表结果方式添加索引

alter table account add unique index name_index(name) ;

查询表索引

show index from account ;

 删除索引:

语法结构:alter table account drop index indexName ; 
alter table account drop index name_index ;

 

创建普通索引:

1、直接创建

语法结构:create index indexName on table_name(column_name(length))
indexName 自定义索引名称
table_name 表名
column_name 字段名
length 索引长度,在文本类型需要指定索引长度

create index phone_index on account(phone);

2、修改表结果方式添加索引

alter table account add index phone_index(phone) ;

查看表索引

show index from account ;

删除索引:

语法结构:alter table account drop index indexName ; 
alter table account drop index phone_index ;

 

创建组合索引:

1、修改表结果方式添加索引

alter table account add index name_phone_index(name,phone) ;

查看表索引

show index from account ;

注:在对组合索引查询时,都会遵循最左优先,也就是从左往右的优先级,当出现范围查询(><betweenlike 等)时停止匹配。

 

posted @ 2024-03-11 22:58  西夏一品唐  阅读(3)  评论(0编辑  收藏  举报