全面指南-彻底了解索引的最左婚配准则 (指南全面发展)
最左婚配准则的定义
便捷来讲:在联结索引中,只要左边的字段被用到,左边的能力够被经常使用到。我们在建联结索引的时刻,辨别度最高的在最左边。
便捷的例子
创立一个表
CREATETABLE`user`(`id`INTNOTNULLAUTO_INCREMENT,`code`VARCHAR(20)COLLATEutf8mb4_binDEFAULTNULL,`age`INTDEFAULT'0',`name`VARCHAR(30)COLLATEutf8mb4_binDEFAULTNULL,`height`INTDEFAULT'0',`address`VARCHAR(30)COLLATEutf8mb4_binDEFAULTNULL,PRIMARYKEY(`id`),KEY`idx_code_age_name`(`code`,`age`,`name`),KEY`idx_height`(`height`))
建设联结索引:idx_code_age_name。
该索引字段的顺序是:
而后拔出一组数据
INSERTINTO数据库.`user`(id,CODE,age,NAME,height,address)VALUES(DEFAULT,'1002',40,'kevin',180,'北京市');
以下会走索引
select*fromuserwhere;select*fromuserwhereandage=40select*fromuserwhereandage=401and;select*fromuserwherecode='1002'and;
我们经过EXPLN加下面的恣意语句口头
EXPLAINSELECT*FROMUSERWHERECODE='1002'AND;
都会看到type值为ref
![彻底了解索引的最左婚配准则](https://tyye.cn/zb_users/theme/tpure/style/images/lazyload.png)
以下不会走索引
select*fromuserwhereage=21;select*fromuserwhere;select*fromuserwhereage=21and;
我们经过EXPLAIN加下面的恣意语句口头,会看到type值为all
大家可以看到where从code(从左到右依次是:code、age、name)的联结索引,开局查问就会走索引,假设不从code开局就不会走索引!即只要左边的字段被用到,左边的能力够被经常使用到
explain的罕用type值
这里先便捷的说一下explain,explain即口头方案,经常使用explain关键字可以模拟优化器口头sql查问语句,从而知道是如何处置sql语句。explain关键用于剖析查问语句或表结构的性能瓶颈。
explain的罕用type值含意如下:
·"ALL"示意全表扫描,没有经常使用索引。
·"index"示意经常使用了索引,但不是笼罩索引(即查问中经常使用了索引,但还须要回表失掉数据)。
·"range"示意经常使用了笼罩索引(即查问中间接从索引中失掉了所需数据,无需回表)。
·"ref"示意经常使用了索引(或者是笼罩索引或非笼罩索引),并经常使用了一个或多个列启动比拟。
·"eq_ref"示意经常使用了惟一索引,并且只经常使用了等于操作符启动比拟。
我的每一篇文章都宿愿协助读者处置实践上班中遇到的疑问!假设文章帮到了您,劳烦点赞、收藏、转发!您的激励是我始终降级文章最大的能源!
CPU使用率经常100%,是不是导致速度慢的原因?换个CPU是不是就能解决问题?
1可能是系统问题2程序太多3中毒
mysql索引的最左原则a,b,c三个使用求解
可以,你可以使用数据库 进行 查询一下看看是否走索引就知道了
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。