论坛首页 综合技术论坛

oracle sql =号左边含有 TRIM 严重影响性能!

浏览 4108 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-12-26  

这学期的项目中,用hibernate和oracle。表结构我们不能改,这样的遗留系统用hibernate有点麻烦。汗!别人把可变长的字符类型设计为CHAR,郁闷死。这样所有?形式的sql语句基本上无效(不是恰好这么长就找不到数据),这是oracle的JDBC限定了(mysql的JDBC不会)。然后就想到在=号左边用TRIM可以解决PrepareStatement找不到数据的问题。

     麻烦来了。同学用100W行数据来测试。发现比较卡。然后追踪hibernate的SQL日志发现有trim的语句就慢。然后把此SQL语句在PL/SQL客户端试下,发现在26秒才能找到结果。汗!这么严重!去了TRIM不到1秒的事情。

     字段类型的设计不好,就这样...

     用TRIM的初衷是为了解决 oracle jdbc char 字段 PreparedStatement 查询问题 .

   发表时间:2007-12-26  
人人都知道事情。除非建了trim函数索引!
0 请登录后投票
   发表时间:2008-09-25  
连接的字段类型不一致
左边用TRIM去掉空格确实不行
可以在=右边用RPAD补全
0 请登录后投票
   发表时间:2008-10-04  
junmine 写道

连接的字段类型不一致 左边用TRIM去掉空格确实不行 可以在=右边用RPAD补全


当时不知道有rpad, 所以解决办法是不用PreparedStatement
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics