mysql+index组合索引_MySQL 优化之 index merge(索引合并)
标签:
MySQL5.0之前,一条语句中一个表只能使用一个索引,无法同时使用多个索引。但是从5.1开始,引入了 index merge 优化技术,对同一个表可以使用多个索引。理解了 index merge 技术,我们才知道应该如何在表上建立索引。
相关文档:http://dev.mysql.com/doc/refman/5.6/en/index-merge-optimization.html (注意该文档中说的有几处错误)
The Index Merge method is used to retrieve rows with several range scans and to merge their results into one. The merge can produce unions, intersections, or unions-of-intersections of its underlying scans. This access method merges index scans from a single table; it does not merge scans across multiple tables.
In EXPLAIN output, the Index Merge method appears as index_merge in the type column. In this case, the key column contains a list of indexes used, and key_len contains a list of the longest key parts for those indexes.
index merge: 同一个表的多个索引的范围扫描可以对结果进行合并,合并方式分为三种:union, intersection, 以及它们的各种组合。
Examples:
SELECT * FROM tbl_name WHERE key1 = 10 OR key2 = 20;
SELECT * FROM tbl_name
WHERE (key1 = 10 OR key2 = 20) AND non_key=30;
SELECT * FROM t1, t2
WHERE (t1.key1 IN (1,2) OR t1.key2 LIKE ‘value%‘)
AND t2.key1=t1.some_col;
SELECT * FROM t1, t2
WHERE t1.key1=1
AND (t2.key1=t1.some_col OR t2.key2=t1.some_col2);
文档这里是有错误的:最后一个select语句, t2.key1=t1.some_col OR t2.key2=t1.some_col2,因为这里使用的是 OR,所以这里是无法使用组合索引的。
The Index Merge method has several access algorithms (seen in the Extra field of EXPLAIN output):
Using intersect(...)
Using union(...)
Using sort_union(...)
根据索引合并的方式不同,会在explain结果中显示使用了那种合并方法。
一般而且出现了 Index merge 并不一定是什么好事。比如一般出现了 Using intersect 的执行计划,预示着我们索引的建立不是最佳的,一般可以通过建立符合索引来进一步进行优化,可以参考文章:https://www.percona.com/blog/2009/09/19/multi-column-indexes-vs-index-merge/
标签:
mysql+index组合索引_MySQL 优化之 index merge(索引合并)相关推荐
- mysql字段简索引_MySQL优化看这一篇就够了
本文概要 概述 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 ...
- mysql 走索引 很慢_MySQL优化:为什么SQL走索引还那么慢?
背景 2019-01-11 9:00-10:00 一个 MySQL 数据库把 CPU 打满了. 硬件配置:256G 内存,48 core 分析过程 接手这个问题时现场已经不在了,信息有限,所以我们先从 ...
- mysql 回表查询优化_MySQL优化:如何避免回表查询?什么是索引覆盖?
转自:https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651962609&idx=1&sn=46e59691257 ...
- mysql优化varchar索引_MySQL优化--概述以及索引优化分析
一.MySQL概述 1.1.MySQL文件含义 通过如下命令查看 show variables like '%dir%'; MySQL文件位置及含义 名称 值 备注 basedir /usr/ 安装路 ...
- mysql中b树是什么_MySQL优化中B树索引知识点总结
为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太长, 3.或等待时间太长 4.sql语句欠佳,以及我们索引失效 5.服务器参数设置不合理 SQL语句执行过程分 ...
- mysql in 命中索引_MySql优化-你的SQL命中索引了吗
在项目开发中SQL是必不可少的,表索也一样.这些SQL的运行性能不知道吗?有多少是命中了索引的?命中哪个索引?索引中有哪个是无效索引?这些无效索引是否会影响系统的性能?带着这些问题我们一起来学习一下. ...
- mysql索引使增删变慢_mysql优化(四)–索引
http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html 一. 四种索引类型: 主键索引,唯一索引,全文索引,普通索引 二. 为什 ...
- mysql优化之索引_mysql优化之索引
概念: 在数据库中除了数据之外,还维护着满足特定查找算法的数据结构.这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引.通常使用B树以及变种B+树 ...
- mysql 回表查询优化_mysql:若何行使笼罩索引制止回表优化查询
说到笼罩索引之前,先要领会它的数据结构:B+树. 先建个表演示(为了简朴,id按顺序建): id name 1 aa 3 kl 5 op 8 aa 10 kk 11 kl 14 jk 16 ml 17 ...
最新文章
- python执行cmd并返回是否成功_python脚本执行CMD命令并返回结果的例子
- 多思计组原理虚拟实验室_先睹为快!汽院实验室组团来亮相_搜狐汽车
- 技术动态 | TechKG:一个面向中文学术领域的大型知识图谱
- 分享MYSQL中的各种高可用技术(源自姜承尧大牛)
- Windows下动态库的制作与使用
- Oracle数据库-建库、建表空间,建用户
- Elasticsearch 8.x 正式发布!
- 合成孔径雷达算法与实现_典型线面目标合成孔径雷达参数化成像
- telegtram的通信协议MTproto2.0学习3 之 (telethon代码分析与TL的实现1)
- 企业微信登陆服务器设置,企业微信怎么登入
- exchange协议发送邮件
- Apollo选型及优势介绍
- autosar arxml文件配置(四)
- opencv 打开摄像头
- 手机端上传照片压缩功能canvas
- Libuv源码解析 - uv_loop整个初始化模块
- 【Spark】Spark基础教程
- NRF52832学习笔记(23)——GAP主机端连接
- vs2013运行c语言出现:无法查找或打开 PDB 文件问题解决
- 小米手机进行测试uiautomator出现的故障
热门文章
- 一张图看透JavaScript原型关系:__proto__(对象原型)和prototype(函数原型)
- UML图系列——用例图
- 转译:Oracle 中 Object_iD 和 Data_Object_ID 的区别
- axure能做剪切蒙版吗_卫生间瓷砖不打掉能做防水吗
- python 乘法运算定律_计算机组成原理(上)资料
- mysql ereg_php中正则表达式匹配函数ereg是不是被弃用了?
- 与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面
- 阿里云消息队列 2021 新功能新特性重要里程碑
- 深圳快测计算机技术有限公司,口罩快速检测出数据口罩快检预检办理
- 授予数据库账号dba权限_从自建Oracle迁移至云原生数据仓库AnalyticDB PostgreSQL