Java Statement.executeQuery为每个SQL查询占用相同的时间
我试图通过获取连接、准备语句和执行查询来比较两个查询的性能。 使用Java Statement.executeQuery为每个SQL查询占用相同的时间,java,sql,executequery,Java,Sql,Executequery,我试图通过获取连接、准备语句和执行查询来比较两个查询的性能。 使用System.currentTimeMillis()在executeQuery()之前和之后捕获所花费的时间 具有讽刺意味的是,无论查询是什么,所花费的时间总是一样的。(忽略第一次执行) 有人能告诉我,如何获得查询执行所需的正确时间吗 代码段: Connection conn = DriverManager.getConnection(url,"721junits","721junits"); Statement stmt = c
System.currentTimeMillis()
在executeQuery()
之前和之后捕获所花费的时间
具有讽刺意味的是,无论查询是什么,所花费的时间总是一样的。(忽略第一次执行)
有人能告诉我,如何获得查询执行所需的正确时间吗
代码段:
Connection conn = DriverManager.getConnection(url,"721junits","721junits");
Statement stmt = conn.createStatement();
ResultSet rs;
long startTime = System.currentTimeMillis();
rs = stmt.executeQuery(sql);
long endTime = System.currentTimeMillis();
conn.close();
System.out.println("Total time taken : "+ (endTime - startTime));
您应该使用system.nanoTime()
阅读本文了解更多信息为什么你认为你得到的数字是错误的?但是,可以肯定的是,您还应该使用返回的
ResultSet
。根据JDBC驱动程序的不同,它可能延迟了实际执行,但这不太可能。可能因为SQL执行计划相同,所以两个查询占用的时间相同?如果两者都会导致全表扫描,那么您希望它们的运行时间相同。
Connection conn = DriverManager.getConnection(url,"721junits","721junits");
Statement stmt = conn.createStatement();
ResultSet rs;
long startTime = System.nanoTime();
rs = stmt.executeQuery(sql);
long endTime = System.nanoTime();
conn.close();
System.out.println("Total time taken : "+ (endTime - startTime));