MySQL基础杂记

1.如何查看sql语句的执行性能

a.使用explain命令:查看操作行数,是否使用索引(可以验证索引是否起作用),连接的类型等信息。
b.使用show profiles查看执行时间

2.慢查询

在日志中记录运行比较慢的sql语句(需要开启)

3.索引没起作用的情况

a.使用like关键字的查询语句中,如果匹配字符串的第一个字符为“%”则索引不起作用。
b.使用多列索引时(一个索引最多有16个字段),只有查询条件使用了索引中的第一个字段时索引才会被使用。

4.分解关联查询:

将一个大的查询分解成多个小查询,对每个表进行一次查询,然后将查询结果在应用程序中进行关联,很多场景下这样效率会更高。

5.引起慢查询的的原因往往是file sort(文件排序)
6.exists子查询执行原理

select * from a where Id exists(select * from b)
循环取出a表中的每条记录与b表进行比较,但会导致a表无法使用索引。
优化:select * from a inner join b on a.id=b.id
使用inner而不使用left join或者right join,这两个连接顺序是固定的,而 inner的连接顺序和写的顺序无关,交由mysql自行选择。

7.left join,right join,inner join,full join的区别

left join:返回包括左表中的所有记录和右表中连接字段相等的记录
right join:返回右表中的所有记录和左表中连接字段相等的记录
inner join:(等值连接,内连接):只返回两个表中连接字段相等的行;
full join;返回左右表中的所有记录和左右表中连接字段相同的记录。

8.存储过程

存储过程就是一条或多条sql语句的集合,将其封装成一个代码块以复用。

9.触发器

与存储过程不用,触发器时特定事件出现时自动执行或者激活的。

10.索引

分类:普通索引,唯一索引,主键索引,组合索引,全文索引。

11.事物的四大特性

原子性、一致性、隔离性、持续性(永久性)

12.事务并发安全问题

a.脏读:脏数据,一个事务未提交的数据便是脏数据。
b.不可重复读:一个事务在执行期间无论重复读取多少次数据,返回的结果都应该与第一次读取到的数据一致,若不一致,便意味着发生了不可重复读的安全问题。
c.幻读:侧重整行的数据变化,若一个事务在执行期间读取到的结果数量不相同,那就说明读取到了幻影数据,发生了幻读问题。

13.事务隔离级别

a.Read Uncommitted(读取未提交内容):实际应用很少,读数据不加锁,写数据加行级共享锁,提交完释放。
b.Read Committed(读取提交内容):大多数数据库默认事务隔离级别,读数据加行级共享锁,读完释放;写时加行级独占锁,事务结束释放。
c.Repeatable Read(可重读):mysql默认事务隔离级别,读操作加行级共享锁,事务结束释放;写操作加行级独占锁,事务结束释放。
d.Serializable(可串行化):这是最高的隔离级别,读操作时加表级共享锁,事务结束时释放;写操作时加表级独占锁,事务结束时释放。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值