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