【发布时间】:2014-09-17 22:48:44
【问题描述】:
我正在一个小表上执行一个简单的查询
SELECT * FROM SYSTEM
系统表只有三列(Id、Name、Progress)和 1300 行。
我获取数据的代码是:
尝试 { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = (连接) DriverManager.getConnection( "jdbc:mysql://192.168.0.107:3306/my_database", 用户名.getText(),密码.getText()); String query = "select * from system"; stmt = (语句) conn.createStatement(); rs = (ResultSet) stmt.executeQuery(query); 而(rs.next()){ tableModel.addRow(new Object[] { rs.getInt("Number"), rs.getString("姓名"), rs.getFloat("进度") }); } } 捕捉(异常 e){ // 一些其他代码 }`这段代码在我的 JTable 中显示日期大约需要 15 秒,而如果我在 phpmyadmin 中执行查询,则只需不到一秒。
【问题讨论】:
-
分析代码或添加计时语句以查看时间花费在哪里。我认为一个名为 SYSTEM 的表是个坏主意。
-
是executeQuery还是处理ResultSet的时间慢?
-
先获取executeQuery语句开始的实际时间,之后确定执行查询的实际时间。
-
我刚刚检查过了。查询的执行很好(~1s),结果集的处理很慢。除了使用线程,我应该怎么做才能让while循环更快地完成?
-
@user3822347 阅读我的答案。最重要的部分可能是最后两句话。