Mysql最左匹配原则实践(原创)

mysql最左匹配原则

什么叫最左匹配原则

最左匹配原则的误区

实战

结论:

1 条件查询中条件顺序没有关系

2 在最左匹配原则中,有如下说明:

最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

参考文档

联合索引的最左前缀匹配原则

------------

mysql索引最左匹配原则的理解?

MySQL数据库SQL优化第四篇:通过trace分析优化器如何选择执行计划

原文地址:https://www.cnblogs.com/snowwhite/p/10078957.html

时间: 2024-08-29 22:54:27

Mysql最左匹配原则实践(原创)的相关文章

Mysql中联合索引的最左匹配原则(百度)

创建联合索引时列的选择原则 经常用的列优先(最左匹配原则) 离散度高的列优先(离散度高原则) 宽度小的列优先(最少空间原则) 在Mysql建立多列索引(联合索引)有最左前缀的原则,即最左优先.如果我们建立了一个2列的联合索引(col1,col2),实际上已经建立了两个联合索引(col1).(col1,col2);如果有一个3列索引(col1,col2,col3),实际上已经建立了三个联合索引(col1).(col1,col2).(col1,col2,col3). 解释 1.b+树的数据项是复合的

联合索引最左匹配原则

什么时候创建组合索引? 当我们的where查询存在多个条件查询的时候,我们需要对查询的列创建组合索引 为什么不对每一列创建索引 减少开销 覆盖索引 效率高 减少开销:假如对col1.col2.col3创建组合索引,相当于创建了(col1).(col1,col2).(col1,col2,col3)3个索引 覆盖索引:假如查询SELECT col1, col2, col3 FROM 表名,由于查询的字段存在索引页中,那么可以从索引中直接获取,而不需要回表查询 效率高:对col1.col2.col3三

MySQL &#39;In Place&#39; 升级实践,从5.1到5.7

接上篇翻译的文章:使用'In place' 方法直接从5.0升级至5.7,在此记录我实践的过程. 1.环境准备 数据库A 版本:5.1 字符集:latin1 引擎:MyISAM 数据库量:约220G 表数据量:约600 服务器:centos6.5 2.升级过程 已经搭建好5.1版本数据的从库,等主从同步之后,开始升级从库 在第一次升级时遇到问题,执行mysql_upgrade显示表损坏. 我们在升级前,首先检查并修复表(MyISAM引擎).  ./bin/mysqlcheck -uroot -h

最左匹配原则

1.简单说下什么是最左匹配原则顾名思义:最左优先,以最左边的为起点任何连续的索引都能匹配上.同时遇到范围查询(>.<.between.like)就会停止匹配.例如:b = 2 如果建立(a,b)顺序的索引,是匹配不到(a,b)索引的:但是如果查询条件是a = 1 and b = 2或者a=1(又或者是b = 2 and b = 1)就可以,因为优化器会自动调整a,b的顺序.再比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,

【转】Mysql索引最左匹配原则理解

作者:沈杰 链接:https://www.zhihu.com/question/36996520/answer/93256153来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 这是你的表结构,有三个字段,分别是id,name,cid CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAUL

【转】mysql索引最左匹配原则的理解

作者:沈杰 链接:https://www.zhihu.com/question/36996520/answer/93256153 来源:知乎 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_cid_INX` (`name`,`cid`),

Mycat(4):消息表mysql数据库分表实践

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/46882777 未经博主允许不得转载. 1,业务需求 比如一个社交软件,比如像腾讯的qq.可以进行群聊天(gid),也可以单人聊天. 这里面使用到了数据库中间件mycat,和mysql数据表分区. 关于mycat分区参考: [ 数据库垂直拆分,水平拆分利器,cobar升级版mycat] http://blog.csdn.net/freewebsys/article/details

中国移动MySQL数据库优化最佳实践

原创 2016-08-12 章颖 DBAplus社群 本文根据DBAplus社群第69期线上分享整理而成,文末还有书送哦~ 讲师介绍章颖 数据研发工程师 现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA 开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维DBA与相关开发共同参与,其中MySQL参数及服务器配置优化主要由运维DBA完成,开发则需要从数据

B+树|MYSQL索引使用原则

MYSQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了.为什么要改成这样,之前都没有听过存储引擎,于是网上查了一下. 事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. 在 MySQL 中,主要有四种类型的索引,分别为: B-Tree 索引, Ha