今天在生产环境中发现,有几个页面的请求响应非常慢,大概需要5秒左右;但是在测试环境一点问题都没有。
经过测试,问题定位在了一个查询语句上(select username from t_user where user_code=123),经过2个小时左右的代码检查,终于让我发现问题所在了。
user_code字段类型是varchar2,sql语句里面却把这个字段赋值为一个整数,会进行类型转换,比较花时间,改成select username from t_user where user_code=’123‘这样只后,速度一下就提升了。
原因就在与user_code是索引列,查询条件数据类型不同时,oracle在内部会进行类型转换,查询不会再用到索引了。