mysql索引的创建,新增,删除,查看
索引定义
MySQL官方对索引的定义是:索引(Index)是帮助MySQL高效获取数据的数据结构
。索引最形象的比喻就是图书的目录。注意只有在大量数据中查询时索引才显得有意义
。
在MySQL中索引是在存储引擎层实现的``,
而不是在服务器层实现的,
所以不同存储引擎具有不同的索引类型和实现```。
索引的优缺点:
优点
1、合理的索引提高了查询的效率,但是insert update delete等性能会变差
2)创建索引可以大幅提高系统性能,帮助用户提高查询的速度;
3)通过索引的唯一性,可以保证数据库表中的每一行数据的唯一性;
4)可以加速表与表之间的链接;
5)降低查询中分组和排序的时间
缺点
索引的存储需要占用磁盘空间;
当数据的量非常巨大时,索引的创建和维护所耗费的时间也是相当大的;
当每次执行CRU操作时,索引也需要动态维护,降低了数据的维护速度
存储引擎介绍
**存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型**
索引分类:
按数据结构分类:B+tree索引、Hash索引、Full-text索引。
按物理存储分类(innodb存储引擎):聚集索引、非聚集索引(也叫二级索引、辅助索引)。
按字段特性分类:主键索引(PRIMARY KEY)、唯一索引(UNIQUE)、普通索引(INDEX)、全文索引(FULLTEXT)。
-
主键索引(PRIMARY KEY)
建立在主键上的索引被称为主键索引
,一张数据表只能有一个主键索引,索引列值不允许有空值,通常在创建表时一起创建。 -
唯一索引(UNIQUE)
建立在UNIQUE字段上的索引被称为唯一索引,一张表可以有多个唯一索引,索引列值允许为空,列值中出现多个空值不会发生重复冲突。
CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
CREATE UNIQUE INDEX manager_id ON dept(manager_id)
- 普通索引(INDEX) 建立在普通字段上的索引被称为普通索引。
create index 索引名 on 表名(字段名)
单个索引
create index idx_user_id on user(id)
联合索引
create index idx_user_id _name_age on user(id,name,age)
idx_user_id:索引简写+表+索引字段
- 全文索引(FULLTEXT) MyISAM
存储引擎支持Full-text索引,用于查找文本中的关键词,而不是直接
比较是否相等。Full-text索引一般使用倒排索引实现,它记录着关键词到其所在文档的映射。
InnoDB 存储引擎在 MySQL 5.6.4 版本中也开始支持Full-text索引
按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)
MySQL索引按字段个数分类可分为:单列索引、联合索引(也叫复合索引、组合索引)。
- 单列索引 :建立在单个列上的索引被称为单列索引
查询索引:
语法: show index from 表
主要参数:
删除索引
DROP INDEX <索引名> ON <表名>
drop index department_name on dept;
新建表中添加索引
① 普通索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
index index_no(no)
)
1
2
3
4
5
6
7
8
② 唯一索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
unique index index_no(no)
)
1
2
3
4
5
6
7
8
③ 全文索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
fulltext index index_no(no)
1
2
3
4
5
6
7
④ 多列索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
key index_no_name(no,name)
)
已建表中添加索引:
① 普通索引
语法:create index 索引字段名 on 表(索引字段名)
create index string on books(string);
② 唯一索引
语法:create unique index 索引字段名 on 表(索引字段名)
create unique index index_name
on t_dept(name);
③ 全文索引
create fulltext index index_name
on t_dept(name);
④ 多列索引
create index index_name_no
on t_dept(name,no)
以修改表的方式添加索引
① 普通索引
alter table t_dept
add index index_name(name);
② 唯一索引
alter table t_dept
add unique index index_name(name);
③ 全文索引
alter table t_dept
add fulltext index_name(name);文章来源:https://www.toymoban.com/news/detail-426230.html
④ 多列索引
alter table t_dept
add index index_name_no(name,no);文章来源地址https://www.toymoban.com/news/detail-426230.html
到了这里,关于Mysql高级知识-------索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!