徐无忌MySQL笔记:索引的使用规则
徐无忌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笔记:索引的使用规则相关推荐
- 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?
徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么? 完成:第一遍 1.数据库并发控制通过什么实现? 当多个事务并发方法对同一个数据进行操作 通过数据库锁实现对数据库的并发控制. 2.锁类 ...
- 徐无忌MySQL笔记:乐观锁VS悲观锁
徐无忌MySQL笔记:乐观锁VS悲观锁 完成:第一遍 1.数据库锁的具体实现分为哪两类? 数据库锁的具体实现可以分为乐观锁和悲观锁 2.什么是乐观锁? 乐观锁:顾名思义,就是很乐观,每次去拿数据的时候 ...
- 徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离?
徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离? 完成:第一遍 1.理想的主从架构实现的效果是怎样的? 主库负责所有读写操作,从库只实现对主库备份功能,这样的主从架构性价比是很低的 ...
- mysql 联合索引的命中规则_可能是全网最好的MySQL重要知识点/面试题总结
标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL ...
- mysql联合索引的使用规则
从一道有趣的题目开始分析: 假设某个表有一个联合索引(c1,c2,c3,c4)以下选项哪些字段使用了该索引: A where c1=x and c2=x and c4>x and c3=x B ...
- MySQL联合索引生效规则
最近项目中一张表数量测试达到千万级别,考虑加索引,对于单列索引及联合索引(复合索引)简单学习了下,做一下笔记. 联合索引生效前提:因为联合索引有顺序讲究,联合索引的第一个字段是引导列,只有他被引用的时 ...
- MySQL 笔记8 -- 存储过程和索引
MySQL 笔记8 – 存储过程和索引 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 SQL 教程 一.存储 ...
- MySQL索引介绍,普通索引,全文索引,空间索引,多列索引使用原则,建立索引常用的规则
转自:https://blog.csdn.net/tomorrow_fine/article/details/78337735 1.MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可 ...
- 徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的?
徐无忌深入JVM虚拟机笔记:Java代码到底是如何运行起来的? 完成:第一遍 1.Java代码到底是如何运行起来的? Demo.java编写的源文件 打包成:Jar包即Demo.class 通过Jav ...
最新文章
- [k8s] 第六章 Pod控制器详解(Controller-manager)
- Windows Phone开发(48):不可或缺的本地数据库
- mysql的模糊查询以及时间类型整理
- WDF驱动中KMDF与UMDF区别
- C#调用C++Dll封装时遇到的一系列问题
- 过滤html标签 RemoveHTML
- InChatter系统开源聊天模块前奏曲
- linux和windows双系统互拷文件乱码问题
- CCF201612试题
- linux和windows的ip区别吗,windows与linux ping 显示的ip不一样
- 31. Magento图片大小调整的相关代码
- 王道训练营Day1作业
- 基于广度优先搜索的哈密顿图的判断算法
- NOIP2016普及组T4(魔法阵)题解
- 网卡5790c linux驱动,富士通DPK5790H驱动
- lic文件用计算机程序打开,LIC 文件扩展名: 它是什么以及如何打开它?
- Jenkins 自动构建之日程表配置
- Linux运维常见面试题
- PMP思维导图—项目经理的角色
- object sender,EventArgs e
热门文章
- 【JS】使用onclick方法把对象本身传输给方法
- 【MySQL报错】1366 - Incorrect string value: ‘\xE6\x80\xBB\xE7\xBB\x8F...‘ for column ‘name‘ at row 1
- 解码者:数学探秘之旅——读书笔记(一)
- Magento订单打印(pdf格式) 转:鹏程万里
- Ubuntu软件管理、换源、驱动及部分软件安装操作(持续更新)
- android定位的速度方向如图所示,在Android中计算罗盘方位/前往位置
- 怎么修改设置路由器默认密码
- 开机后电脑只剩计算机和回收站,电脑开机黑屏只有回收站的具体解决方法
- 基于Python的SQLite基础知识学习
- GCN(通过https://www.bilibili.com/video/BV1QK4y1t75Q?p=1share_medium=androidshare_plat=androidshare)