Java MySQL查询比预期慢

时间:2014-08-27 09:48:31

标签: java mysql sql

我正在尝试使用Java连接到我的MySQL数据库。这是代码:

Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
java.sql.Statement stmt = connection.createStatement();
long startTime = System.currentTimeMillis();
stmt.execute("SELECT row_1, row_2, row_3, row_4 FROM dataset where row_5 is null and row_6 is null limit 100");
long endTime = System.currentTimeMillis();
System.out.println("That took " + (endTime - startTime) + " milliseconds");
ResultSet rs = stmt.getResultSet();
while (rs.next()) {
   System.out.println(rs.getString("row_1"));
}
stmt.close();

表'dataset'是500万行,并在主(row_1,row_2,row_3,row_4)和第二个索引(row_5和row_6)上编制索引。

未缓存,此查询使用SequelPro for Mac(数据库管理软件)需要1.9毫秒。但是,当我在Java中运行上面的代码时,它需要大约1800毫秒(未缓存)。请告诉我,如果它只是Java那么慢,或者我可以做些什么来优化Java中的查询,因为它使用SequelPro或使用其他脚本语言完美地工作。

1 个答案:

答案 0 :(得分:0)

你作为独立程序在main方法中作为单个代码单元执行吗?您应该知道“冷”jvm,这可能会导致强大的启动性能影响。类似的你(我)不知道java.sql.Statement.java的源代码。我们不知道在执行查询时是否可能存在成员的惰性初始化。在测量时间之前进行一些处理,可以使用不同的查询来防止兑现。