demo table

创建表

create table test(id int,v1 int,v2 int,primary key(id))
Engine=InnoDB DEFAULT CHARSET=UTF8;

该表的记录如下:

问题一:如果一条sql同时命中两个索引,那实际会用几个索引?

添加两个索引:

ALTER TABLE test
ADD INDEX idx_v1 (v1) USING BTREE ,
ADD INDEX idx_v1_v2 (v1, v2) USING BTREE ;

通过 explain 来查看:

会命中两条索引,但实际只用了 idx_v1,即使实际查询用联合索引更好,也依然只用了 idx_v1

问题二:如果命中两个索引,到底会用哪一个?

之前的测试,发现用的是第一个,我们删除索引,把之前的索引语句顺序换一下:

ALTER TABLE test
ADD INDEX idx_v1_v2 (v1, v2) USING BTREE,
ADD INDEX idx_v1 (v1) USING BTREE ;


发现用的是第一个。

结论

会依照索引添加的先后顺序,用最早添加的索引。即使是联合索引也依照这个规则。

参考链接 :
Mysql —— 索引的使用顺序 : https://www.jianshu.com/p/27da1c106157

Mysql —— 索引的使用顺序相关推荐

  1. mysql索引空间太大_MySQL优化索引

    1.  MySQL如何使用索引 索引用于快速查找具有特定列值的行.如果没有索引,MySQL必须从第一行开始,然后遍历整个表以找到相关的行.表越大,花费越多.如果表中有相关列的索引,MySQL可以快速确 ...

  2. mysql索引教程_MySQL教程96-MySQL索引类型

    索引的类型和存储引擎有关,每种存储引擎所支持的索引类型不一定完全相同.MySQL 索引可以从存储方式.逻辑角度和实际使用的角度来进行分类. 存储方式区分 根据存储方式的不同,MySQL 中常用的索引在 ...

  3. mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记

    最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻. 本篇文章以<高性能MySQL>中的索引章 ...

  4. MySQL索引背后的数据结构及算法原理【转】

    http://blog.codinglabs.org/articles/theory-of-mysql-index.html MySQL索引背后的数据结构及算法原理[转] 摘要 本文以MySQL数据库 ...

  5. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化

    本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...

  6. 不会MySQL索引,面试官让回家等通知!

    " 你是不是对于 MySQL 索引的知识点一直都像大杂烩,好像什么都知道,如果进行深究的话可能一个也答不上来. 假如你去面试,面试官让你聊一下对索引的理解,然而你对索引的理解仅限于,检索数据 ...

  7. 关于MySQL索引知识与小妙招 — 学到了!

    一.索引基本知识 1.1 索引的优点 大大减少了服务器需要扫描的数据量,加快数据库的检索速度 帮助服务器避免排序和临时表 将随机io变成顺序io 1.2 索引的用处 速查找匹配WHERE子句的行 从c ...

  8. mysql索引排序算法_MySQL中利用索引对数据进行排序的基础教程

    MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描.利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作.当索引的顺序与ORDER BY中的列顺 ...

  9. mysql json匹配key为数值_干货篇:一篇文章让你——《深入解析MySQL索引原理》

    概述 最近一段时间重新深入研究了一遍MySQL的内容,今天主要分享分析MySQL索引原理,后续会输出一些关于MySQL方面的干货,希望各位小伙伴喜欢. 一.什么是索引.为什么要建立索引? 关于索引的理 ...

最新文章

  1. 群晖共享文件夹局域网通过SMB本地访问
  2. ajax提交数据服务端返回报错
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式
  4. lambda表达式的日期问题
  5. Android网络课程笔记-----Actionbar的实现方式
  6. 使用dom breakpoint找到修改属性的javascript代码
  7. 将 JAR 转为 EXE – JSMOOTH 的使用教程(第二期)(转载)
  8. 对于移动类型Z17和帐户64020100 物料号 (009)的不同的字段选择(公司间调拨)
  9. mysql数据库管理指导_mysql学习笔记一(数据库管理控制)
  10. 【渝粤教育】国家开放大学2019年春季 0692-22T化工设备机械基础 参考试题
  11. Master of Typing - Tutor for Mac(打字大师—盲打练习课程)
  12. System.Web.Helpers.Json 与 Newtonsoft.Json 的性能对比
  13. [我的阿里云服务器] —— 安装LAMP
  14. SPSS26中文免费版下载和安装教程
  15. 图解路由器:这玩意儿能连接全世界的网络?
  16. 详解 git cherry-pick用法
  17. word文档的生成以及echarts图片的插入
  18. C - Super Mario(分块+二分)
  19. linux恢复mysql数据库_linux下如何备份还原mysql数据库
  20. mac系统时间自动校准仍然不准确修复方式

热门文章

  1. python监听键盘输入 linux_Linux下使用Python捕获键盘输入
  2. java帳戶登錄_java.sql.SQLException: ORA-28000: 帐户已被锁定
  3. 安装jdk时更改java安装路径_JDK下载安装步骤
  4. ElementUI-学生管理系统后台实例
  5. 同时插入同一行记录,产生阻塞的处理分析(4号锁分析之Unique key的约束)
  6. 未来5年中国企业信息化格局
  7. Android Activity概述
  8. linux环境c语言编程 蔡晋,Linux环境C语言编程
  9. springboot 文件上传 各种姿势 解锁,策略模式简单运用
  10. 大数据学习路线图 让你精准掌握大数据技术学习