数据库char字段做trim之后查询很慢的解决方式

sql 复制代码
select * from TABLE0 where trim(column1)=:param

当表数据量大时,即使给column1字段加上索引,这条查询语句也会很慢。

因为使用trim函数后,column1的索引会失效,有两种处理方法:

1.给表加上trim(column1)函数索引

这样就能走索引查询,不用全表扫描

2.代码里面对param补齐末尾的空格

使用tirm无非是担心char字段存储的长度没达到数据库设置的长度,数据末尾会出现空格,而前端展示数据时一般会去掉空格传给后端,这就导致无法查询出数据,char是用来存储定长字符的,虽然出现这种问题,是设计和使用上的不合理导致,但是还得解决这个问题。

可以在程序中对传入参数的末尾补齐空格,直到达到char字段的长度,这样查询就不需要tirm了,java代码如下:

java 复制代码
    private String formatChar(String s, int charLen){
        int len = s == null ? 0 : s.length();
        if(len > 0 && len < charLen){
            StringBuilder blank = new StringBuilder();
            for (int i = 0, j= charLen - len; i < j; i++) {
                blank.append(" ");
            }
            s = s + blank;
        }
        return s;
    }
相关推荐
Tapdata17 分钟前
什么是 Operational Data Hub?它因何而生,又为何能够在当下成为技术共识?
数据库
这里有鱼汤24 分钟前
普通人做量化,数据库该怎么选?
数据库·后端
BOOM朝朝朝1 小时前
Mongo索引
数据库·后端
许野平2 小时前
Rust:如何访问 *.ini 配置文件?
开发语言·数据库·rust·ini·configparser
程序终结者3 小时前
超越边界:MongoDB 16MB 文档限制的 pragmatic 解决方案
数据库·mongodb
正在走向自律4 小时前
SelectDB数据库,新一代实时数据仓库的全面解析与应用
数据库·数据仓库·实时数据仓库·selectdb·云原生存算分离·x2doris 迁移工具·mysql 协议兼容
昵称是6硬币4 小时前
MongoDB系列教程-第四章:MongoDB Compass可视化和管理MongoDB数据库
数据库·mongodb
Full Stack Developme5 小时前
Java 日期时间处理:分类、用途与性能分析
java·开发语言·数据库
雪碧聊技术7 小时前
存储过程的介绍、基本语法、delimiter的使用
数据库·存储过程的基本语法·delimiter的使用
_码农121388 小时前
spring boot 使用mybatis简单连接数据库+连表查询
数据库·spring boot·mybatis