mysql最左匹配原则与索引选择原则

一、explain语句分析

1. 作用

	1.1 通常用于sql语句的性能分析
	1.2 打印出一条sql语句优化器的执行计划
	1.3 索引使用情况
	1.4 性能好不好

2. 语法

	 explain + 要操作的sql语句;
explain select * from article where status = 0;

3. 详细字段说明

explain分析sql语句:

explain分析sql语句

id – select识别符。

	这是select的查询序列号,id的值越大优先级别越高,越先被执行,如果id相同,执行顺序由上至下

select_type – 表示select语句的类型。

	类型:
		SIMPLE:表示最简单的查询,不包括连接查询与子查询
		  explain select * from user where id = (select id from where name="asi");
		PRIMARY:最外层的查询 -- select * from user where id =();
		SUBQUERY:子查询 -- select id from where name="asi"
		  explain select id from where name="asi" union all select id from where name="ayu";
		UNION:合并 联合查询,union 后面的那张表就会表示成它
		UNION RESULT:联合结果
		DERIVED: 衍生查询-在select出一批自定义列的数据,概念上相当于一张表,但是该表只在语句执行过程出现和

table – 与查询语句相关的表。

partitions – 表分区,参数的使用

type – 表示的是表的连接类型。

	类型:
		①all:遍历全表数据查询

		②index:只遍历索引树上的数据查询

		③range:只检索给定范围的行,使用一个索引来选择行,条件过滤,索引定位

		④ref:表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值

		⑤null :MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

		⑥eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,
			      简单来说,就是多表连接中使用primary key或者 unique key作为关联条件

		⑦const:当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量。

		⑧system: system是const类型的
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和引用,MySQL底层使用B树来存储索引,对于InnoDB而言,主键索和行记录是存储在一起的,被称为聚集索引。除了聚集索引,其他索引被称为非聚集索引。当我们在联合索引中按照最左匹配原则进行查询时,只有最左边的字段开始匹配时,才能走索引。也就是说,如果联合索引是(a, b, c),那么我们在查询时需要先根据字段a进行匹配,如果条件中的字段不符合从左到右的顺序,将无法走索引。这也解释了为什么需要遵守最左匹配原则,因为只有最左列有序才能保证右边的索引列有序。,虽然有些情况下不符合最左匹配原则的条件可能会走索引,但这并不是规定中的行为。在使用EXPLAIN语句进行分析时,可能会发现有些不符合最左匹配原则的查询语句也使用了索引。这可能是因为MySQL优化器做了一些特殊的优化,但这并不意味着不符合最左匹配原则的查询一定会走索引。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL索引最左匹配原则](https://blog.csdn.net/zhouchen1998/article/details/124672991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值