mysql使用中关于索引的一些测试

一、序

写在前面,本文都是我亲自测试的结果,我根据结果进行的总结,对于原理不甚了解,请大家参考,也希望懂的朋友在下面评论,告诉我原因。

二、举例表数据:

clipboard.png

三、总结

1.最大的原则,mysql优化器会判断开销,选择开销最小的查询方式。

2.有索引不一定使用索引,当mysql判断where条件没有起到筛选作用时,即使该字段存在索引,也不会使用索引。

索引状态:此时type有索引

sql:
 explain extended select * from y_user where type >0; 

结果:

clipboard.png

但是,当我修改查询条件,

explain extended select * from y_user where type >1; 

结果:

clipboard.png

可以看到,使用了type索引。

3.当查询条件中有索引和没索引的条件同时存在时,不一定使用索引,同第2条

索引状态:此时type有索引,nation未加索引

sql:

explain extended select * from y_user where type >0 and nation>0; 

结果: 未使用任何索引

当然,修改条件,还是会使用索引type的

4.两个字段同时具有索引

索引状态:此时type有索引,nation有索引,同第2条。此外,修改查询条件,两个索引都有效时,选择过滤更多结果的索引。

5.组合索引,比如给type和nation建立组合索引,nation_type和type_nation,当两个字段都出现且都有效时,选择过滤更多的组合索引,比如nation条件比type过滤更多,就会选择nation_type。

此外,组合索引有一个最左前缀原则,也就是说如果组合索引为 a_b_c,那么查询时的只要出现了a或者a,b,或者abc都可以使用改组合索引。但是,不能没有a查询条件,也就是说最左前缀的意思是查询条件一定要包含
组合索引最左边的元素,而不是说查询条件必须按照组合索引的组合顺序进行查找。

6.如果有主键会优先使用主键,其次为唯一索引,再次为组合索引和普通索引。组合索引和普通索引没有先后。

7.以上所有,在查询过程中查询条件的顺序不影响索引的使用。


妙笔生花
一些个人在项目中遇到的问题的方案的总结~
232 声望
2 粉丝
0 条评论
推荐阅读
万字长文~vue+express+mysql带你彻底搞懂项目中的权限控制(附所有源码)
所谓的权限,其实指的就是:用户是否能看到,以及是否允许其对数据进行增删改查的操作,因为现在开发项目的主流方式是前后端分离,所以整个项目的权限是后端权限控制搭配前端权限控制共同实现的

水冗水孚8阅读 1.2k

一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山7阅读 1.7k评论 2

分布式高可用Mysql数据库Percona XtraDB Cluster 8.0 与 Proxysql 史上最详尽用法指南
PXC是Percona XtraDB Cluster的缩写,是 Percona 公司出品的免费MySQL集群产品。PXC的作用是通过mysql自带的Galera集群技术,将不同的mysql实例连接起来,实现多主集群。在PXC集群中每个mysql节点都是可读可写的...

apollo0084阅读 7.2k评论 2

MongoDB 插入时间与更新时间(create_time/update_time)
MongoDB 在数据库层面不能像 MySQL 一样设置自动创建 create_time/update_time,自动更新 update_time

qbit阅读 14k评论 2

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 717

封面图
SegmentFault 思否技术周刊 Vol.70 — 深入 MySQL 实战
MySQL 软件采用了 GPL( GNU 通用公共许可证),由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。

Beverly2阅读 1.5k

封面图
MySQL 数据库索引技术原理初探
一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。

mylxsw1阅读 1.3k

232 声望
2 粉丝
宣传栏