我现在有一个日志数据库,数据量非常庞大(大概一个小时有400万记录,平均一张数据表有1500万记录),如果使用同步的方法来查询,则用户可能要等很久才能看到查询结果。我以前是用VB+ADO来做异步查询的,现在想切换到Java+JDBC,可是一直找不到相关的资料。我查到Statement接口下有个cancel()的函数可能和这个有点关系,可是还是不知道该怎么使用。当然也不一定局限与异步查询,只要能比较快地取到查询结果(一部分也可以)就可以了。现在我用VB+ADO,基本上几秒之内就能返回一部分可以显示的记录,所以用户不会觉得慢。如果这个问题解决不了,老板就肯定不会同意更换平台了。希望各位大侠帮帮忙,先在此谢谢了!:) 

解决方案 »

  1.   

    异步同步数据方法很简单, 就是要查到上次同步的标记.只要有一个顺序增长的点, 如double 类型/rowid/时间等. 只要能确定这个点, 使用的是SQL脚本, 和Java/VB没有太大的关系
      

  2.   

    楼主不了解 JDBC,我也不是很了解,但我知道一些并且我很能猜。我想楼主这回有福了。JDBC 是这样的,其中最常用的 rs 实际上只是个游标,返回 rs 时实际上只是查询语句执行结束了,但并未真正将数据读入内存,因此这个时间应该不会象楼主想的那么长。JDBC 真正的读取据说是在执行 rs.getXxxx 的时候,但也不是全就读取,而是你 get 多少它就读多少(或许会预取一点点)。
      

  3.   

    你用的什么数据库?
    我知道有的数据库支持row-level lock,比较省时间
    比如mysql
      

  4.   

    我用的是SQL Server,或者是桌面版的。谢谢doway(john),我确实没不了解JDBC,甚至没用过。不过我会试试是否像你说的那样。
      

  5.   

    再次感谢doway(john):)我今天试了一下,果然是立即返回的。不过后来犯了一个错误,对一个3000万记录的表执行了排序,半天没反应……