徐无忌MySQL笔记:索引的使用规则

完成:第一遍

1.索引的使用大致分为哪两类?

单列索引

联合索引

2.单列索引?

比如:SELECT uid FROM people WHERE name=‘AdByCool’AND gender=‘Man’

步骤一:对name列建立索引,这样就把范围限制在name=‘AdByCool’ 的结果集上

步骤二:之后再对这个结果集进行扫描,寻找满足gender=‘Man‘得到最终结果

SELECT uid FROM people WHERE name=‘xuwuji’AND gender=‘M’

注意一点:在MySQL中执行查询时,每次只能使用一个索引

如果我们在name,gender上分别建索引。执行查询时,MySQL会自动选择一个最严格,也就是获得结果集记录数最少的索引

3.联合索引有哪些特点?

特点一:建一个联合索引(a、b、c),实际相当于建了(a),(a、b),(a、b、c)三个索引

特点二:在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边

特点三:B+树是按照从左到右的顺序来建立,当(a、b、c)这样的数据来检索的时候:
(1)比较a来确定下一步的搜索方向
(2)如果a相同再依次比较b
(3)如果b相同再比较c,最后得到检索的数据

4.如何理解最左匹配原则?

例子一:当使用(b、c)但没有a进行查找时,B+树不知道首先检查哪个节点,因为通过(a、b、c)建立的B+树第一个比较因子永远是a,所以必须要先根据a来搜索才能知道下一步去哪里查询

例子二:当使用(a、c)来查找时,B+树首先根据a来查找,但下一个字段b的缺失,所以只能把符合a的数据都找到,然后再从得到的结果集里面扫描,得到能够匹配字段c的数据,也就是意味着(a、c)会使用联合索引,但只有字段a才生效

徐无忌MySQL笔记:索引的使用规则相关推荐

  1. 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?

    徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么? 完成:第一遍 1.数据库并发控制通过什么实现? 当多个事务并发方法对同一个数据进行操作 通过数据库锁实现对数据库的并发控制. 2.锁类 ...

  2. 徐无忌MySQL笔记:乐观锁VS悲观锁

    徐无忌MySQL笔记:乐观锁VS悲观锁 完成:第一遍 1.数据库锁的具体实现分为哪两类? 数据库锁的具体实现可以分为乐观锁和悲观锁 2.什么是乐观锁? 乐观锁:顾名思义,就是很乐观,每次去拿数据的时候 ...

  3. 徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离?

    徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离? 完成:第一遍 1.理想的主从架构实现的效果是怎样的? 主库负责所有读写操作,从库只实现对主库备份功能,这样的主从架构性价比是很低的 ...

  4. mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结

    标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL ...

  5. mysql联合索引的使用规则

    从一道有趣的题目开始分析: 假设某个表有一个联合索引(c1,c2,c3,c4)以下选项哪些字段使用了该索引: A where c1=x and c2=x and c4>x and c3=x B ...

  6. MySQL联合索引生效规则

    最近项目中一张表数量测试达到千万级别,考虑加索引,对于单列索引及联合索引(复合索引)简单学习了下,做一下笔记. 联合索引生效前提:因为联合索引有顺序讲究,联合索引的第一个字段是引导列,只有他被引用的时 ...

  7. MySQL 笔记8 -- 存储过程和索引

    MySQL 笔记8 – 存储过程和索引 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 SQL 教程 一.存储 ...

  8. MySQL索引介绍,普通索引,全文索引,空间索引,多列索引使用原则,建立索引常用的规则

    转自:https://blog.csdn.net/tomorrow_fine/article/details/78337735 1.MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可 ...

  9. 徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的?

    徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的? 完成:第一遍 1.Java代码到底是如何运行起来的? Demo.java编写的源文件 打包成:Jar包即Demo.class 通过Jav ...

最新文章

  1. [k8s] 第六章 Pod控制器详解(Controller-manager)
  2. Windows Phone开发(48):不可或缺的本地数据库
  3. mysql的模糊查询以及时间类型整理
  4. WDF驱动中KMDF与UMDF区别
  5. C#调用C++Dll封装时遇到的一系列问题
  6. 过滤html标签 RemoveHTML
  7. InChatter系统开源聊天模块前奏曲
  8. linux和windows双系统互拷文件乱码问题
  9. CCF201612试题
  10. linux和windows的ip区别吗,windows与linux ping 显示的ip不一样
  11. 31. Magento图片大小调整的相关代码
  12. 王道训练营Day1作业
  13. 基于广度优先搜索的哈密顿图的判断算法
  14. NOIP2016普及组T4(魔法阵)题解
  15. 网卡5790c linux驱动,富士通DPK5790H驱动
  16. lic文件用计算机程序打开,LIC 文件扩展名: 它是什么以及如何打开它?
  17. Jenkins 自动构建之日程表配置
  18. Linux运维常见面试题
  19. PMP思维导图—项目经理的角色
  20. object sender,EventArgs e

热门文章

  1. 【JS】使用onclick方法把对象本身传输给方法
  2. 【MySQL报错】1366 - Incorrect string value: ‘\xE6\x80\xBB\xE7\xBB\x8F...‘ for column ‘name‘ at row 1
  3. 解码者:数学探秘之旅——读书笔记(一)
  4. Magento订单打印(pdf格式) 转:鹏程万里
  5. Ubuntu软件管理、换源、驱动及部分软件安装操作(持续更新)
  6. android定位的速度方向如图所示,在Android中计算罗盘方位/前往位置
  7. 怎么修改设置路由器默认密码
  8. 开机后电脑只剩计算机和回收站,电脑开机黑屏只有回收站的具体解决方法
  9. 基于Python的SQLite基础知识学习
  10. GCN(通过https://www.bilibili.com/video/BV1QK4y1t75Q?p=1share_medium=androidshare_plat=androidshare)