mysql-对type&status字段等加索引对查询有帮助么?

最常见的是status应用在task表中时,抓取数据时,sql如下:

SELECT *
FROM
  task
WHERE
  valid = 1
  and runCount < 5
  and opStatus = 1

where条件中runCount变化是最频繁的,跑一次就要+1.
opStatus最常用的就1(未处理)-->2(锁定)-->3(成功).而且数据分布中1是数据量最少的数据集,大部分数据在3这个状态。

取决于你查询和修改的特性(划重点),

如果1和非1差不多数量,加索引并不能有效优化。
如果1很少非1很多,而你只查询1,那么索引是有效的。但是增加和修改的索引效率会降低,如果修改操作出现了瓶颈那么应该去掉索引。

按照推论,继续验证,现场实例:
rows:426617
不加opStatus索引时耗时在300ms,如下:


image.png

加完索引,后耗时在5ms。
同时观察insert和update耗时也正常。

话又说回来,如果真是类似性别or业务类型,产生就不会动了,而且type的值分布几乎是均匀的,加索引也不会有明显性能提升.... 所以字段加索引不是绝对的,要看业务场景~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容