【发布时间】:2019-08-26 06:50:25
【问题描述】:
我有一个包含 6001215 行数据的 lineitem 表,我想快速获取此查询 SELECT * FROM LINEITEM 的结果,然后处理内存中结果集中的数据。
我有这段代码,但还是很慢。
String Query = "SELECT * FROM LINEITEM";
Properties p = new Properties();
p.setProperty("user", "root");
p.setProperty("password", "root");
p.setProperty("MaxPooledStatements", "10000");
p.setProperty("cachePrepStmts", "true");
p.setProperty("useServerPrepStmts", "true");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/tpch",p);
conn.setAutoCommit(false);
PreparedStatement preparedStatement = conn.prepareStatement(Query);
resultSet = preparedStatement.executeQuery(Query);
} catch (Exception e) {
System.err.println("Got an exception! ");
System.err.println(e.getMessage());
}
【问题讨论】:
-
您真的想将 600 万行拉入内存吗?你在哪里实际处理结果集
-
你应该打电话给
preparedStatement.executeQuery()而不是preparedStatement.executeQuery(Query)。 -
我需要将结果集所有结果供以后使用。除了留在记忆里,还有别的办法吗?
-
这真的取决于你想要做什么
-
我想从每一行获取哈希码并保存