这学期的项目中,用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 查询问题 .
在使用Hibernate框架连接Oracle数据库时遇到CHAR类型字段导致PreparedStatement查询失效的问题。通过使用TRIM解决查询问题,却发现大量数据查询变得非常缓慢。去掉TRIM后,查询速度显著提升。
993

被折叠的 条评论
为什么被折叠?



