使用用户自定义变量没有使用索引

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v5.7.25-TiDB-v4.0.0
  • 【问题描述】:

定义一个变量,然后使用变量作为查询条件,执行查询时没有使用索引,如果将变量改为具体值,就会使用索引。

未使用索引

set @userno = ‘123’;
select * from tb_user where c_userno = @userno

使用索引

select * from tb_user where c_userno = ‘123’

感谢反馈,已经复现,问题确认一下,会反馈到帖子里面。

:+1:为加班人点赞

确认了一下,该问题是已知问题。目前变量的过滤条件都不能进行下推计算,所以没有办法走到索引。如果需要使用变量,建议再业务侧做一些修改或者了解一下窗口函数。

1赞

好的,谢谢

感谢反馈 ~