mysql 多列索引 底层实现_Atitit.  单列目录与多列索引 多个条件的查询原理与设计实现_mysql...

本文探讨了MySQL中单列索引与多列索引在多个条件查询下的不同,强调了最左前缀原则,并介绍了索引合并的概念,包括其优势和在不同查询场景下的应用。
摘要由CSDN通过智能技术生成

Atitit.  单列索引与多列索引 多个条件的查询原理与设计实现

Atitit.单列索引与多列索引多个条件的查询原理与设计实现

1.mysql只能使用一个索引1

1.1.最左前缀1

1.2.从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的索引。2

2.一条 sql 可以使用多个索引2

2.1.什么是索引合并2

2.2.使用索引合并有啥收益3

2.3.具体的索引合并流程4

3.Referred、4

1.MySQL只能使用一个索引

那么,如果在firstname、lastname、age这三个列上分别创建单列索引,效果是否和创建一个firstname、lastname、 age的多列索引一样呢?答案是否定的,两者完全不同。当我们执行查询的时候,MySQL只能使用一个索引。如果你有三个单列的索引,MySQL会试图选择一个限制最严格的索引。但是,即使是限制最严格的单列索引,它的限制能力也肯定远远低于firstname、lastname、age这三个列上的多列索引。

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

1.1.最左前缀

多列索引还有另外一个优点,它通过称为最左前缀(Leftmost Prefixing)的概念体现出来。继续考虑前面的例子,现在我们有一个firstname、lastname、age列上的多列索引,我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时,MySQL将使用fname_lname_age索引:* firstname,lastname,age* firstname,lastname* firstname

1.2.从另一方面理解,它相当于我们创建了(firstname,lastname,age)、(firstname,lastname)以及(firstname)这些列组合上的索引。

四、

五、

2.一条 sql 可以使用多个索引

mysql 的索引合并并不是什么新特性。早在 mysql5.0 版本就已经实现。之所以还写这篇博文,是因为好多人还一直保留着一条 sql 语句只能使用一个索引的错误观念。本文会通过一些示例来说明如何使用索引合并。

2.1.什么是索引合并

下面我们看下 mysql文档中对索引合并的说明: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.

根据官方文档中的说明,我们可以了解到:

1.

索引合并是把几个索引的范围扫描合并成一个索引。

2.

3.

索引合并的时候,会对索引进行并集,交集或者先交集再并集操作,以便合并成一个索引。

4.

5.

这些需要合并的索引只能是一个表的。不能对多表进行索引合并。

6.

2.2.使用索引合并有啥收益

简单的说,索引合并,让一条 sql可以使用多个索引。对这些索引取交集,并集,或者先取交集再取并集。从而减少从数据表中取数据的次数,提高查询效率。

在 explain的extra字段中会以下几种:

·

Using union 索引取并集

·

·

Using sort_union 先对取出的数据按rowid排序,然后再取并集

·

·

Using intersect 索引取交集

·

2.3.具体的索引合并流程

3.Referred、

多个条件的查询建立索引是几个字段建立一个索引还是还每个字段定义为一个索引_-CSDN论坛-CSDN.NET-中国最大的IT技术社区.html

MySQL 索引合并  一条 sql 可以使用多个索引-SOHU-DBA-微头条(wtoutiao.com).htm

欢迎大家阅读《Atitit.  单列目录与多列索引 多个条件的查询原理与设计实现_mysql》,跪求各位点评,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值