`

jdbc 中statement用法的误解

阅读更多
原以为 statement的executequery()会将所有结果返回。
比如
Statement stmt = null;
    String query = "select * from tab1";
    try {
        stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
 
  
之前以为,执行到这里时,数据已经保存在变量rs中,如果数据量很大,会把内存撑爆;
经过最近的一次测试发现,其实rs中只保存少量数据(如10条),其他数据依旧只在数据库服务器中,
通过rs.next()少量数据取完后,才会从数据库取数据到本地;并且rs.next()速度非常快,多个线程处理时,从服务器获取数据的速度非常惊人,经测试,速度的瓶颈在于网络带宽。
应用该特点,可以实现单表数据的快速导出

后记:今天在mysql测了一下,发现事情又并非如此,执行executeQuery函数的时候,所有数据会全部加载
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics