我为我的一个客户开发了一个招标管理系统的代码种类。这是一段代码:优化帮助:SQL查询显示每个国家的最低价格
try {
Connection con = Mycon.getConnection();
PreparedStatement ps = con.prepareStatement("TRUNCATE tempcalcplan");
ps.executeUpdate();
ps.clearBatch();
ps = con.prepareStatement("INSERT INTO tempcalcplan SELECT v.conid,c.conname, v.rate, v.venid FROM venprices v LEFT JOIN country c ON c.conid = v.conid WHERE (v.conid, v.rate) IN (SELECT v.conid, MIN(v.rate) FROM venprices v GROUP BY v.conid) GROUP BY v.conid");
ps.executeUpdate();
ps.clearBatch();
ps = con.prepareStatement("select * from tempcalcplan");
ResultSet rs = ps.executeQuery();
jTable1.setModel(DbUtils.resultSetToTableModel(rs));
} catch(Exception e){
e.printStackTrace();
}
这段代码被设计成用作:
- 清空表
tempcalcplan
(假定先前的结果被存储。) - 生成期望的数据与在两张不同的表的帮助下(表格如下所示)并将其存储在
tempcalcplan
表中 - 在jTable上显示
tempcalcplan
表的结果。
这里是country
和tempcalcplan
表。
country
(含30000条记录)+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | conid | int(10) | NO | PRI | NULL | | | conname | varchar(50) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
tempcalcplan
(包含1,80,000+纪录)+---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | conid | int(10) | NO | PRI | NULL | | | conname | varchar(50) | YES | | NULL | | | rate | double | YES | | NULL | | | venid | varchar(50) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
venprices
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | conid | int(10) | NO | PRI | NULL | | | rate | double | YES | | NULL | | | venid | varchar(50) | NO | PRI | | | +-------+--------------+------+-----+---------+-------+
结果最多需要12-15分钟才能显示在jTable中。 我想把它缩短到1-2分钟。
闻起来像[_Groupwise max_](https:// mariadb。com/kb/en/mariadb/groupwise-max-in-mariadb /) - 该链接显示如何有效地执行此操作。 –