gpt4 book ai didi

java - java中的许多SQL选择查询可能找不到

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

我当前遇到一个使用大量 sql select 的应用程序的性能问题。

编程语言是java,我使用的是mysql数据库。它包含大约 1000 万条记录。它需要做的是在数据库中查找以邮政编码和门牌号作为参数的记录。当没有找到记录时,需要仅使用邮政编码进行查询,并获取门牌号最小的记录。当在数据库中找不到邮政编码时,应用程序需要对此进行处理。

因此,执行单个查询的代码如下所示:

Statement select = "select * from zipcode_addresses where zipcode = ? and houseNo =?";
ResultSet rs = select.executeQuery();
if(rs.next()) {
dealWithResult(rs);
}
else {
Statement alternativeSelect = "select * from zipcode_addresses where zipcode = ? group by houseNo having min(houseNo)";
ResultSet rs = alternativeSelect.executeQuery();
if(rs.next()) {
dealWithResult(rs);
} else {
System.err.println("Could not find zipcode :" + zipcode);
}
}

是否有正确的方法来执行批量选择查询来处理未找到的数据?

谢谢!

更新

表结构如下:

+-----------------+-------------+------+-----+---------+-------+  
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| zipcode | varchar(6) | NO | PRI | NULL | |
| house_no | int(11) | NO | PRI | NULL | |
| sanddcode | varchar(45) | NO | | NULL | |
| depot | varchar(3) | NO | | NULL | |
| network_point | varchar(6) | NO | | NULL | |
| region | varchar(3) | NO | | NULL | |
| seq | int(11) | NO | | NULL | |
| cluster_id | varchar(1) | NO | | NULL | |
| strand_id | int(11) | NO | | NULL | |
| strand_props_id | int(11) | NO | | NULL | |
| version_id | int(11) | NO | PRI | NULL | |
+-----------------+-------------+------+-----+---------+-------+

版本 ID、邮政编码和 house_no 的主键邮政编码和 house_no 上的索引以及邮政编码上的另一个索引,都使用 BTREE 索引。

该应用程序有时可能用于执行 100 万个不同的选择查询,此时它花费的时间太长。

最佳答案

您的代码片段没有显示您的语句是如何准备的。如果您的语句被多次调用,那么您应该查看PreparedStatement 对象:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

然后可以缓存您的语句以减少 future 的开销。

关于java - java中的许多SQL选择查询可能找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025074/

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