Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Statement.executeQuery为每个SQL查询占用相同的时间_Java_Sql_Executequery - Fatal编程技术网

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));