mysql索引、隔离级别问题

1.mysql索引类型
1.普通索引允许空值
2.唯一索引允许空值
3.主键索引不允许空值
4.组合索引(指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合)
5.全文索引

2.mysql索引失效情况
首先怎么查看某条语句是否走了索引呢
explain select * from emp where name = ‘Jefabc’
用 explin或者desc关键字

type表示表的连接类型,由上至下,效率越来越高

ALL : 全表扫描
index : 索引全扫描
range : 索引范围扫描,常用语<,<=,>=,between,in等操作
ref 使用非唯一索引扫描或唯一索引前缀扫描,返回单条记录,常出现在关联查询中
eq_ref : 类似ref,区别在于使用的是唯一索引,使用主键的关联查询
const/system : 单条记录,系统会把匹配行中的其他列作为常数处理,如主键或唯一索引查询
null : MySQL不访问任何表或索引,直接返回结果

!!你暂时要记住 all就是不走索引,index就是索引全扫描,range索引范围扫描,ref联合查询返回唯一数据,eq_ref使用唯一索引扫描所以更快。

失效情况:
1.联合索引没有遵循最左原则
2.使用select *
3.索引列上有计算、用了函数
4.like 左侧加了%
5.字段类型不同 比如把varchar和int混了
6.列对比explain select * from user where id=height
7.not in、not exist等关键字导致
exist语句没怎么用过,这个关键字是对内层查询的查询,只返回真或者假

select * from employee

where exists

(select d_name from department where d_id=1003);
        )

mysql的四个隔离级别看了很多遍了。
ru,rc,rr,serialable
依次解决了,脏读,不可重复度,幻读的问题。

还有mysql索引的存储结构btree和b+tree区别,b+tree只有叶子节点才存储具体数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值