查询中,有没有可能多个索引一起用呢?

其实我们之前所讲的回表,就是两个索引树同时使用,先在二级索引树中搜索到对应的主键值,然后在再去主键索引树中查询完整的记录。

但是我今天的问题是,两个不同的二级索引树,会同时生效吗?理论上来说,应该是可以同时生效的,不然这个 MySQL 也太笨了。不过根据松哥日常开发经验,这种事情最好能够避免,如果发生了同时搜索两棵索引树的事情,大概是你的索引设计有问题,此时就要去检查一下索引的设计是否合理。

阅读更多

普通索引 PK 唯一性索引,用哪个好?

[TOC]

我们建索引的时候,有全文索引、主键索引、唯一性索引、普通索引等,前面两个好理解好区分,大家都知道啥时候用,后面两个该如何区分呢?唯一性索引和普通索引该如何选择呢?今天我们就来聊聊这个话题。

阅读更多

索引下推,yyds!

索引的问题,已经跟大家聊了两篇文章了~今天再聊一个索引下推问题,也是非常有意思!

索引下推是从 MySQL5.6 开始引入一个特性,英文是 index condition pushdown,一般简称为 ICP,索引下推通过减少回表的次数,来提高数据库的查询效率。

阅读更多

是时候检查一下使用索引的姿势是否正确了!

[TOC]

索引,可以有效提高我们的数据库搜索效率,各种数据库优化八股文里都有相关的知识点可背,不过单纯的被条目其实很容易忘记。

所以松哥想通过几篇文章,和大家仔细聊一聊索引的正确使用姿势,结合一些具体的例子来帮助大家理解索引优化,这是一个小小的系列,可能会有几篇文章,今天先来第一篇。

阅读更多

什么是 MySQL 的“回表”?

小伙伴们在面试的时候,有一个特别常见的问题,那就是数据库的回表。什么是回表?为什么需要回表?

阅读更多

咦,为什么我的事务回滚不了?

MySQL 事务小伙伴们都懂,通过 begin 开启事务,通过 commit 提交事务或者通过 rollback 回滚事务。

在前面的文章中,松哥也和大家聊了一些事物原理以及相关的细节,小伙伴们可以回顾一下:

阅读更多

手把手教你玩 MySQL 删库不跑路,直接把 MySQL 的 binlog 玩溜!

我们常常听人说,只要你愿意,MySQL 可以恢复至半个月甚至一个月以内的任何一个状态。网上也有很多删库跑路的段子。。。

那么今天松哥想和大家来聊一聊 MySQL 中的 binlog,来手把手教大家如何利用 binlog 来恢复 MySQL 中的数据,这样,以后要是不小心删库了,那也不用跑路了。

阅读更多

为什么执行 alter 更新表要慎重?

说到 MySQL 中的锁,相信小伙伴们多多少少都能说出来一些,例如全局锁、表锁、行锁等等。

今天我想和大伙分享一个经常容易被忽略的锁,那就是 MDL,这个锁如果忽略了,可能会导致大问题,一起来看下。

阅读更多