Mysql高级知识-------索引

这篇具有很好参考价值的文章主要介绍了Mysql高级知识-------索引。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)。

  1. 主键索引(PRIMARY KEY)
    建立在主键上的索引被称为主键索引,一张数据表只能有一个主键索引,索引列值不允许有空值,通常在创建表时一起创建。

  2. 唯一索引(UNIQUE)
    建立在UNIQUE字段上的索引被称为唯一索引,一张表可以有多个唯一索引,索引列值允许为空,列值中出现多个空值不会发生重复冲突。

CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))

CREATE UNIQUE INDEX manager_id ON dept(manager_id)
  1. 普通索引(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:索引简写+表+索引字段

  1. 全文索引(FULLTEXT) MyISAM
    存储引擎支持Full-text索引,用于查找文本中的关键词,而不是直接

比较是否相等。Full-text索引一般使用倒排索引实现,它记录着关键词到其所在文档的映射。

InnoDB 存储引擎在 MySQL 5.6.4 版本中也开始支持Full-text索引

按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)

MySQL索引按字段个数分类可分为:单列索引、联合索引(也叫复合索引、组合索引)。

  1. 单列索引 :建立在单个列上的索引被称为单列索引

查询索引:

语法: show index from 表

Mysql高级知识-------索引
主要参数:
Mysql高级知识-------索引

删除索引

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);

④ 多列索引
alter table t_dept
add index index_name_no(name,no);文章来源地址https://www.toymoban.com/news/detail-426230.html

到了这里,关于Mysql高级知识-------索引的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Mysql高级3-索引的结构和分类

    Mysql高级3-索引的结构和分类

    1.1 索引的介绍 索引index:是帮助 Mysql  高效获取数据  的  有序的数据结构 ,在数据之外,数据库系统维护着的满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引 1.2 索引的优缺

    2024年02月15日
    浏览(15)
  • MySQL高级-存储引擎+存储过程+索引(详解01)

    MySQL高级-存储引擎+存储过程+索引(详解01)

    目录 1.mysql体系结构  2.存储引擎 2.1.存储引擎概述 2.2.1.InnoDB 2.2.2.MyISAM 2.2.3.存储引擎选择 3.存储过程 3.1.存储过程和函数概述  3.2.创建存储过程 3.3.调用存储过程 3.4.查看存储过程 3.5.删除存储过程 3.6.语法 3.6.1.变量 3.6.2.if条件判断 3.6.3.传递参数 3.6.4.case结构 3.6.5.while循环 3.

    2024年02月13日
    浏览(28)
  • 【MySQL高级篇笔记-索引优化与查询优化(中) 】

    【MySQL高级篇笔记-索引优化与查询优化(中) 】

    此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引失效案例 二、关联查询优化 1、采用左外连接 2、采用内连接 3、join语句原理 1.驱动表和被驱动表 2.Simple Nested-Loop Join(简单嵌套循环连接) 3.Index Nested-Loop Join(索引嵌套循环连接) 4.Block Nested-Loop Join(块嵌套循环连接) 5.Join小结

    2024年02月08日
    浏览(9)
  • mysql高级三:sql性能优化+索引优化+慢查询日志

    mysql高级三:sql性能优化+索引优化+慢查询日志

    内容介绍 单表索引失效案例 0 、思考题: 如果把 100 万数据插入 MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执行的长sql,批量插入数据 (4)使用java多线程 (5)使用框架,设置属性,实现批量插入 1、

    2024年02月12日
    浏览(44)
  • MySQL高级篇复盘笔记(一)【存储引擎、索引、SQL优化、视图、触发器、MySQL管理】

    MySQL高级篇复盘笔记(一)【存储引擎、索引、SQL优化、视图、触发器、MySQL管理】

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 连接层

    2024年02月06日
    浏览(45)
  • MySQL(73)MySQL创建索引(CREATE INDEX)

    创建索引是指在某个表的一列或多列上建立一个索引,可以提高对表的访问速度。创建索引对 MySQL 数据库的高效运行来说是很重要的。 MySQL 提供了三种创建索引的方法: 1) 使用 CREATE INDEX 语句 可以使用专门用于创建索引的 CREATE INDEX 语句在一个已有的表上创建索引,但该语

    2024年02月09日
    浏览(11)
  • MySql索引分类及创建索引的相关语法

    MySql索引分类及创建索引的相关语法

    1.1 InnoDB中索引的分类 聚集索引与二级索引之间的B+树的结构 sql语句索引执行的过程讲解 根据id查询的聚集索引效率要比二级索引高,故第一条sql的执行效率要高于第二条sql的执行效率。 如果一个索引只关联一个字段,这种索引称为单列索引,如果一个索引关联了多个字段,

    2024年02月16日
    浏览(12)
  • mysql 如何创建索引

    mysql 如何创建索引

    本文将介绍mysql 如何创建索引,需要的朋友可以参考下 1.添加PRIMARY KEY(主键索引) mysqlALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysqlALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysqlALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEX

    2024年02月17日
    浏览(8)
  • MySQL创建组合索引

    MySQL创建组合索引

    大家都知道索引是用来优化的主要因素,对于少量数据索引的影响并不大,对于几十万或百万级别以上数据的时候,单列索引的性能也不是很理想,组合索引可以大大的减少开销。 1、sql语句: table_name :需要建立组合索引的表名; index_name :组合索引的名字; column1... :创

    2024年02月05日
    浏览(10)
  • MySQL几种创建索引的方式

    MySQL几种创建索引的方式

    一、创建表时创建索引 二、表创建好后创建索引 1、通过Alter创建索引 ①PRIMARY  KEY(主键索引)         mysql ALTER  TABLE  `table_name`  ADD  PRIMARY  KEY (  `column`  )  ②UNIQUE(唯一索引)         mysql ALTER  TABLE  `table_name`  ADD  UNIQUE (`column` )  ③INDEX(普通索引)         mysql ALT

    2024年02月15日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包