第17周MySQL笔记——优化语句查询(索引、视图、事务)

一、索引

1. 什么是索引?
索引,也称作"键(key)",是存储引擎用于快速查找记录的一种数据结构。
2. 索引的优劣势
2.1 优点:
2.1.1、可以提高查询数据的速度;
2.1.2、通过创建唯一索引,可以保证数据库表中每一行数据的唯一性;
2.1.3、在实现数据的参照完整性方面,可以加速表和表之间的连接;
2.1.4、在使用分组和排序子句进行数据查询时,可以减少分组和排序的时间。
2.2 缺点:
2.2.1、创建和维护索引需要耗费时间,并且随着数据量的增加所耗费的时间也会增加;
2.2.2、索引需要占用磁盘空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸;
2.2.3、当对表中的数据进行增加、删除和修改操作时,索引也需要动态的维护,这会降低数据的维护速度。

3.索引的分类和构建索引命令语句
3.1 索引分类有哪些,其基本语法是什么?
3.1.1 分类:单值索引,唯一索引,复合索引,全文索引,空间索引。
3.1.2 基础语法:
  • 创建:create [unique] index indexname on mytable(columname(length));
    alter mytable add [unique] index [indexname] on (columnname(length));
  • 删除:drop index [indexname] on mytable;
  • 查看:show index from table_name\G;
4. 哪些情况适合建立索引,哪些情况不适合建立索引
4.1 适合建立索引:
4.1.1、主键自动建立唯一索引;
4.1.1、频繁作为查询条件的字段应该创建索引;
4.1.2、查询中与其他表关联的字段,外键关系建立索引;
4.1.3、频繁更新的字段不适合创建索引;
4.1.4、where条件里用不到的字段不创建索引;
4.1.5、单键/组合键索引的选择问题,who?
4.1.6、查询中排列的字段,排序字段若通过索引去范文将大大提高排序速度;
4.1.7、查询中统计或分组字段;
4.2 不适合建立索引:
4.2.1、表记录太少;
4.2.2、经常增删改的表;
4.2.3、数据重复且分布平均的表字段,因此应该只为最经常排序的数据建立索引。

二. 视图

  1. 概念:视图是一个虚拟的表,是从数据库中一个或多个表中导出来的表,其内容由查询语句定义。
  2. 视图与普通表的区别是:视图是已经编译好的sql语句,普通表不是;视图没有世纪的物理记录,普通表有;视图是窗口,表是内容;视图只保存sql逻辑不报错查询结果,表保存查询结果。
  3. 使用视图的好处:
    3.1、简单性:视图可以大大简化对数据的操作。
    3.2、安全性:视图可以作为一种安全机制。用户只有读的权限。
    3.3、逻辑数据独立性:视图可以使应用程序与数据库表在一定程度上相互独立。
  4. 视图修改和删除的语法是什么?
    4.1、视图修改:
    方法一:create or replace view 视图名 as 查询语句;
    方法二:clter view 视图名 as 查询语句;
    4.2 、视图删除:drop view 视图名;
  5. 具备哪些特点的视图不允许更新?
    5.1 包含以下关键字的sql语句:分组函数、distinct, group by ,having,union 或union all
    5.2 常量视图;
    5.3 select 中包含子查询;
    5.4 join;
    5.5 from 一个不能更新的视图;
    5.6 where 子句的子查询引用了from 子句中的表。
  6. 附加:
    6.1 查看视图:
    6.1.1 查看视图的基本信息:show table status like ‘视图名’ ;
    6.1.2 查看视图的结构信息:describe 视图名 /desc 视图名
    6.1.3 查看视图的定义文本:show create view 视图名;
    6.2 更新视图:
    6.2.1通过视图更新数据表 :update 视图名 set 列名=值1,列2=值2,…,列名n=值n where 条件表达式
    6.2.2 通过更新视图向数据表插入数据:insert [info] 视图名(列名列表) values(值列表1),(值列表2),…, (值列表n)
    6.2.3通过更新视图删除数据表中的数据:delete from 视图名 [where 条件表达式]

三、事务

1.事务的介绍
1.1 概念:事务是一组有着内在逻辑练习的sql语句。可以由一条非常简单的sql语句组成,也可以由一组复杂的sql语句组成。
1.2 特点:原子性,一致性,隔离性,持久性。
2.事务的隔离级别
2.1 未提交读
2.2 已提交读
2.3 可重复读
2.4 可序列化
3.MySQL的锁机制
3.1 MySQL中锁的分类:共享锁(s锁),排他锁(x锁),意向锁
3.2 死锁的处理:InnoDB存储引擎自动检测事务的死锁,并回滚一个或几个事务来防止死锁。
  1. 事务的使用步骤:
    步骤一:开启事务
    set autocommit=0;
    start transaction;
    步骤二:编写事务中的sql语句
    语句1;
    语句2;

    步骤三:结束事务
    commit ;
    rollback;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值