当前位置: 代码迷 >> J2SE >> 生手有关select 查询大数据量的疑惑
  详细解决方案

生手有关select 查询大数据量的疑惑

热度:23   发布时间:2016-04-23 20:08:07.0
新手有关select 查询大数据量的疑惑
用JDBC连数据库的时候select一个表中的所有数据,然后通过ResultSet 获得结果。
那如果select的数据非常大,select会不会很慢呢?
ResultSet 的数据放到哪里呢?
如果数据过大,有哪些解决的思路呢?分页?还是有其他的?
------解决思路----------------------
分页吧,一次查询几条记录,分多次查询

------解决思路----------------------
数据量大的,基本都分页了。
------解决思路----------------------
确定查询结果集的过程称作扫描,扫描可能是全表扫描,或者根据索引来扫描,不管哪种方式,结果集包含的记录数越多,扫描的时间就越长。所以一定要避免一次 select 大结果集,如果有这种需要,也一定要拆分成多次查询。

需要特别注意的是,在查询语句中跳过若干记录,并不表示这些记录就没有扫描。它们仍然是扫描过程的一部分,所以跳过的记录数越多,扫描的时间也会越长,所以拆分查询一定要将第一条结果直接定位在上次查询的最后一条结果的后面,否则就会出现每次查询越来越慢的现象。
------解决思路----------------------
select的数据非常大,select会不会很慢呢
不会,这个操作一般由数据库控制的,像oracle数据库,你查询的时候,结果集默认一次给10条记录,你通过resultSet .next() 方法,遍历完10条的时候,会再去拿下一个10条。
ResultSet 的数据放到哪里呢
数据就在内存中,由于oracle不会一次将所有的结果集都给select ,所以不用担心内存爆掉的问题

  相关解决方案