gpt4 book ai didi

java - 来自 WorkBench 客户端的 MySQL 查询请求比 JDBC .executeQuery 花费的时间少得多

转载 作者:行者123 更新时间:2023-11-29 07:11:35 25 4
gpt4 key购买 nike

我正在使用此代码:

double timeBefore = System.currentTimeMillis();
ResultSet rs = st.executeQuery(sql);
double timeAfter = System.currentTimeMillis();
System.out.println(timeAfter - timeBefore);

返回值为9904.0

当我从 WorkBench MySQL 客户端执行完全相同的查询时:

SELECT DISTINCT completeAddress FROM DB_M3_Medium.AvailableAddressesV2 where postNr = 2300 ORDER BY completeAddress ASC;

需要0.285s

这怎么可能?

PS:我尝试了不同的有效负载大小,它总是大约。使用 Java JDBC 10 秒

编辑:

我尝试了使用与上面相同的查询的PreparedStatement,并且花费了相同的时间,大约。少 1 秒。

我还尝试使用以下代码进行 ping 操作:

String query = "/* ping */ SELECT 1";
double timeBefore = System.currentTimeMillis();
PreparedStatement preparedStatement = DBConnect.getInstance().con.prepareStatement(query);
ResultSet rs = preparedStatement.executeQuery(query);
double timeAfter = System.currentTimeMillis();
System.out.println(timeAfter - timeBefore);

响应是:1306.0,这并不完美,但更好。

但我仍然不明白它出了什么问题。

编辑2:我发现它所花费的时间与数据库中的数据量有关(而不是我正在检索的有效负载)。在我看来,索引不起作用。但为什么只有当我使用 JDBC 而不是使用 WorkBench 时才会出现问题。

最佳答案

当你用java编码时,你正在创建连接,然后传递查询。该查询在 sql 服务器中编译(就像您使用语句一样),然后您将得到结果。整个过程需要一些时间。但是当您在工作台中直接执行时,您既没有创建连接也没有编译,您只是运行sql。因此花费的时间更少

关于java - 来自 WorkBench 客户端的 MySQL 查询请求比 JDBC .executeQuery 花费的时间少得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com