我有一个包含12亿行的PostgreSQL数据库,尝试制作一个可以每次查询一百万行并提供查询更大间隔选项的应用程序。
起初我只是轻松地查询一个包含100万到1000万行的数据库;
现在我使用OFFSET
查询一个大型数据库时,ResultSet
需要很长时间才能生成。
// ...
stmt.setFetchSize(100000);
ResultSet rs = stmt.executeQuery("SELECT mmsi, report_timestamp, position_geom, ST_X(position_geom) AS Long, "
+ "ST_Y(position_geom) AS Lat FROM reports4 WHERE position_geom IS NOT NULL ORDER by report_timestamp ASC LIMIT "
+ limit + " OFFSET " + set);
所以ORDER BY
可能会影响我的执行时间,但是有序的信息可以使后续处理更加方便。是否有更有效率的方法来查询区间内的行?
report_timestamp
为索引,那么这几乎不需要任何操作。我认为还有部分索引可以精确匹配您的where
子句。 - Marko Topolnik