-1
我試圖通過獲取連接來比較2個查詢的性能,準備語句並執行查詢。 在executeQuery()
之前和之後捕獲使用System.currentTimeMillis()
所花費的時間。Statement.executeQuery爲每個SQL查詢花費相同的時間量
具有諷刺意味的任何可能的查詢,所用的時間也都一樣。(忽略第一個執行)
可有人請讓我知道,怎樣才能通過查詢來執行所採取的正確的時間?
代碼片段:
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));
你爲什麼要假設你得到的數字是錯誤的?但是,可以肯定的是,你也應該使用返回的ResultSet。取決於JDBC驅動程序,它可能推遲了實際執行,儘管這不太可能。 – Andreas
也許你的兩個查詢需要相同的時間,因爲SQL執行計劃是相同的?如果兩者都導致全表掃描,你會希望他們花費相同的時間來運行。 – Andreas