慢sql_查询条件加了函数导致索引失效

问题背景:生产环境查询很慢,通过skywaking全链路监控发现/get请求相关的一个sql为慢sql,慢的原因在于查询字段使用了加解密函数(  CONVERT(AES_DECRYPT(UNHEX(`字段名`),'密钥') USING utf8)  )

以下为验证过程:

【先往表target_regulator_tx_info中插入数据用来测试查询操作,其中字段sender为加密字段】

>>>>>>>>>>>>>>>>>>先看看没有索引时的查询情况<<<<<<<<<<<<<<<<<<<<<<

 

 

 

 可以看到:没有索引走的全表扫描。顺便看一下查询条件使用函数时的耗时:

 

 可以看到:用sender这个字段查询时,在同样没有索引的条件下,使用函数比不使用函数慢

>>>>>>>>>>>>>>>>>>DONE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

>>>>>>>>>>>>>>>>>>再来看看加上索引时的查询情况<<<<<<<<<<<<<<<<<<<<<<

 

 

 

 

 可以看到:加了索引后此时走的索引扫描。顺便看一下查询条件使用函数时的耗时:

 

可以看到: 即使这个字段加了索引,这种条件下查询时依然是那么慢

>>>>>>>>>>>>>>>>>>DONE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

 

优化:修改sql,查询条件不进行函数运算,查询条件的值进行加解密运算后,再进行查询

 

posted @ 2022-03-31 16:34  _titleInfo  阅读(245)  评论(0编辑  收藏  举报
//雪花飘落效果