MySQL订单后几位模糊查询

84 阅读1分钟

最近在项目里看到一个感觉挺好的处理,一般对用户的订单号或者账号,会有需求根据比如后五位的查询,如果按照正常的处理 like %xxx%,这样我们都知道是无法走索引的,这样数据量大了,全表扫码很慢。那么怎么处理呢。

逆序存储

我们可以将订单号逆序存一个字段,并创建索引,比如用户的订单号是20241104001012345,那么逆序的字段就是54321010040114202

搜索条件逆序

那么我们接收的后五位的搜索条件是12345,将条件也逆序得到54321,就可以走索引匹配了。

逆序的方法

  • StringBuilder.reverse()
  • StringUtils.reverse()
  • ....