MySQL的索引(index)和视图(view)

MySQL中的索引和视图

总结了一些索引和视图在MySQL中的作用和用法

索引(index)

索引是一种对数据表中一列或者多列值进行排序的一种存储结构。索引相当于书本的目录,可以让我们快速的查找到我们所需要查找的内容。

什么时候需要给字段添加索引?

1. 数据表中该字段的数据量很多
2. 该字段经常作为条件被检索
3. 经常被增删改(DML)操作的字段不建议加上索引

  • 创建索引的基本语法
create index 索引名 on 表名(字段名)  // 该字段名表示被索引的字段
alter table 表名 add unique (字段名) //创建唯一索引
alter table 表名 add index 索引名 (字段名,字段名)  //创建复合索引
alter table 表名 add unique index 索引名 (字段名,字段名)  //创建复合唯一索引

索引有三类:

  • 主键索引: 列值唯一(不可以有null)+ 表中只有一个

  • 单一索引:一个索引只包含了一列,列表示被索引的字段的那个一列

  • 唯一索引:索引列的值必须唯一,但是可以为空

  • 复合索引:一个索引包含多列

主键会自动创建主键索引

  • 查看索引
show index from 表名  //查看该表中的所有索引

查看索引

-查看查询时是否使用了索引

explain 查询语句   //能够显示是否使用了索引

扫描的类型

  1. ALL 全表扫描,没有优化,最慢的方式
  2. index 索引全扫描,其次慢的方式
  3. range 索引范围扫描,常用语<,<=,>=,between等操作
  4. ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中
  5. eq_ref 类似ref,区别在于使用的是唯一索引,使用主键的关联查询
  6. const/system 单条记录,系统会把匹配行中的其他列作为常数处理,如主键或唯一索引查询,system是const的特殊情况
  7. null MySQL不访问任何表或索引,直接返回结果

使用索引
上面一个查询语句使用了索引下面一个没有使用索引

  • 删除索引
drop index 索引名 on 表名
alter table 表名 drop index 索引名 
alter table 表名 drop primary key  //删除主键的索引,一般一张表中只有一个主键

删除索引后,查询会执行全表扫描

优缺点

  • 优点
    1、很大程度上提高了数据的检索效率
    2、加快了表与表之间的连接
    3、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

  • 缺点
    1、索引需要占用物理空间
    2、当对表中的数据进行增删改(DML)操作的时候,索引也需要动态的维护,降低了数据的维护速度

视图(view)

视图是指基于SQL语句查询出来的数据组成的虚拟表,但是这个虚拟表可以进行增删改操作,并且通过对视图的操作,会影响到原表数据。

  • 创建视图
create view 视图名 as 查询语句;  // 注意子查询创建视图不被支持

将student表中的学号、姓名、年龄查询出来作为一个视图

create view view_student as select id,name,age from student;  

我们对这个视图进行操作就相当于对student表进行操作,操作跟操作表一样

将视图中张三的年龄修改为20

update view_student set age = 20 where name = '张三';

这里将张三的年龄修改后,student表中张三的年龄也会被修改为20

  • 删除视图
drop view 视图名  

视图的特点: 可以将复杂的SQL语句以视图对象的形式新建。在需要编写这条SQL语句的位置直接使用视图对象,可以大大简化开发。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学习MySQL中的视图索引时,可以按照以下步骤进行: 1. 理解基本概念:首先,了解视图索引的基本概念和作用。明确视图是用于简化查询操作和逻辑封装的虚拟表,索引是用于加速数据检索的数据结构。 2. 学习语法和语句:熟悉创建、修改和删除视图索引的语法和语句。了解如何使用CREATE VIEW、ALTER VIEW、DROP VIEW、CREATE INDEX、ALTER INDEX和DROP INDEX等命令来操作视图索引。 3. 创建视图:学习如何创建视图。掌握使用CREATE VIEW语句来定义视图的查询逻辑,包括选择要查询的列、指定查询条件等。 4. 修改和删除视图:学习如何修改和删除已存在的视图。了解使用ALTER VIEW和DROP VIEW命令来修改和删除视图的语法和用法。 5. 创建索引:学习如何创建索引。了解使用CREATE INDEX语句来定义索引的语法和参数,包括指定要创建索引的列、选择索引类型等。 6. 修改和删除索引:学习如何修改和删除已存在的索引。了解使用ALTER INDEX和DROP INDEX命令来修改和删除索引的语法和用法。 7. 优化使用视图索引的查询:学习如何优化使用视图索引的查询操作。了解如何合理地选择视图索引的使用情景,以及如何根据查询需求进行性能优化。 8. 实践和练习:通过实际的练习和项目实践,加深对视图索引的理解和应用。自己动手创建、修改和删除视图索引,进行查询操作和性能测试。 这些步骤可以帮助你系统地学习MySQL中的视图索引。建议在学习过程中结合官方文档、参考书籍和在线资源,以及进行实际的练习和实践,加深理解和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值