帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】Mysql索引分类及其使用实例详解

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio

Mysql的索引分类

MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。

单列索引

单列索引又可以叫普通索引,一个索引只包含一个列,一个表中可以有多个单列索引.

创建单列索引的几种方式:

外部创建

使用explain 优化查询检测语,查看使用索引和没有使用索引的区别

可以看到没有使用索引时,查询时间为2.132秒

使用索引后:

可以使用了索引在此执行这个语句,查询时间为0.598秒(差距明显)

创建的索引不作为条件使用

可以看到返回值用到了索引,在查询该列的时候一样有效,效率比没有索引更高

与其他字段配合使用索引

结果一

结果二

结果三

总结单列索引使用方式:可以看出,我们为字段siteNumber创建了索引,通过它来作为条件和返回语句时(作为where条件有它,返回值也有它。不作为where条件,返回值有它即可),查询的时候是能快速的帮助我们实现效果,但是与其他字段在一起使用的时候。起不到效果。所以我们在对单个列作为查询的时候可以使用单列索引。如果想多个字段都能组合使用,下面我使用复合索引来实现(这种方式比单列更常用)

复合索引使用示例

1,为monitor_concentration表的site_number,date_time字段创建复合索引

使用

结果一

结果二

结果三

结果四

结果五

结果六

总结复合索引使用方式:从使用几个结果来看,复合索引做到了单列使用方式。在单列索引我们提出想要实现的效果,在复合索引中成功实现。复合索引比较灵活,我们可以根据实际需要来建立复合索引,下面在举一个列子。

1,给state,date_time创建复合索引

使用

结果一

结果二

这里就不做过多结果展示了,前面使用复合索引页演示过了(注意之前的结果五和结果六,我这里要做一点更改),我将演示这样的效果

需求,查询monitor_concentration表state=3的最新时间

看到了吗,我们已经为state和date_time建立了复合索引,可是我们这里并没有生效哦!
因为使用聚合函数的列不能使用索引(可是我就是想用到索引怎么办呢。。。可以实现的)

删掉刚才创建的复合索引,重新创建复合索引,这里与上面创建的时候区别在于state和date_time交换了位置

重新使用

可以看到,这次我们创建的复合索引是有效的

创建复合索引字段顺序总结:通过列子可以看到,如果我们在使用比较特殊的语句,想要使其生效的话,我们对复合索引字段的顺序需要注意一下。从这里得出,作为条件的列应当放在返回使用的列后面


联系我们
返回顶部