首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

JDBC查询SQLServer2008速度很慢解决思路

2014-01-21 
JDBC查询SQLServer2008速度很慢用了sqljdbc4.jar这个包去访问SQLServer2008,仅仅是做查询,而且是按索引查

JDBC查询SQLServer2008速度很慢
用了sqljdbc4.jar这个包去访问SQLServer2008,仅仅是做查询,而且是按索引查的,用企业管理器查瞬间(毫秒级)就出来了,用JDBC查要秒级,代码如下:


// 获取连接
public void getConnect()
{
try {  
            //注册驱动程序  
            Class.forName(driverNameOfSqlServer);  
            Properties info = new Properties();
            info.put("user", databaseUser);
            info.put("password", databasePassword);
            info.put("sendStringParametersAsUnicode", "false");
            // 获取连接  
            connect = DriverManager.getConnection(databaseUrl, info);  
            connect.setReadOnly(true);
        } catch (Exception e) {  
logger.error(e.getMessage(), e);
        }  
}
// 获取结果集
public ResultSet getResultSetQuery(String sql) 
{    
        try 
        {  
        long startTime = new Date().getTime();
        PreparedStatement statement = connect.prepareStatement(sql,
ResultSet.TYPE_FORWARD_ONLY,  ResultSet.CONCUR_READ_ONLY);
        ResultSet resultSet = statement.executeQuery();
        CachedRowSet rowSet = new CachedRowSetImpl();  
        rowSet.populate(resultSet);
        resultSet.close();
        statement.close(); 
        long spanTime = new Date().getTime() - startTime;
        if(spanTime > 1000)
        logger.info("Too slow when query db:" + spanTime);
            return rowSet;  
        } catch (Exception e) {  
logger.error(e.getMessage(), e); 
        }  
         
        return null;  
 }  


网上大部分此类问题的解决方法都是将sendStringParametersAsUnicode设置为false,可我设置了还是不行。。。

再补充一下现象:
当SqlServer缓冲了之前查询的数据后,再次用JDBC查询就非常快了
[解决办法]
当SqlServer缓冲了之前查询的数据后,再次用JDBC查询就非常快了

这个是由于,数据都在内存中,那么访问这些数据就会快了,因为本来是要从硬盘上去访问的,而从 硬盘访问的速度是比较慢的

热点排行