Java 使用准备好的语句在循环中高效地查询嵌入式数据库

Java 使用准备好的语句在循环中高效地查询嵌入式数据库,java,query-optimization,h2,derby,java-stored-procedures,Java,Query Optimization,H2,Derby,Java Stored Procedures,前几天我问了一个问题,但后来我意识到我已经超越了自己。我正在寻求处理以下情况的正确方法的建议。我试图以最快的方式为给定的地址和城市选择正确的经纬度 我的坐标表有25000行,如下所示: 我有一个JavaHashMap,其中包含一个整数作为键,还有一个ArrayList,其中包含2个条目、地址和城市。HashMap的大小为500 我需要使用4种不同类型的SELECT语句,因为每种语句都比前一种稍微宽松一些,如下所示: SELECT LATITUDE, LONGITUDE FROM coordin

前几天我问了一个问题,但后来我意识到我已经超越了自己。我正在寻求处理以下情况的正确方法的建议。我试图以最快的方式为给定的地址和城市选择正确的经纬度

我的
坐标表有25000行,如下所示:

我有一个Java
HashMap
,其中包含一个
整数
作为键,还有一个
ArrayList
,其中包含2个条目、地址和城市。
HashMap
的大小为500

我需要使用4种不同类型的
SELECT
语句,因为每种语句都比前一种稍微宽松一些,如下所示:

SELECT LATITUDE, LONGITUDE FROM coordinates WHERE(address::text = ? AND community::text = ?) 
UNION ALL
SELECT LATITUDE, LONGITUDE FROM coordinates WHERE (address::text = ? AND community::text LIKE ?)
UNION ALL
SELECT LATITUDE, LONGITUDE FROM coordinates WHERE (address::text LIKE ? AND community::text = ?)
UNION ALL
SELECT LATITUDE, LONGITUDE FROM coordinates WHERE (address::text LIKE ? AND community::text LIKE ?)
注意
的用法,比如
=
。还请注意,我使用的是
UNION ALL
,它汇总了所有结果,而实际上我只对单个最佳匹配结果感兴趣,以避免继续查询是否找到匹配项。也许
限制
会有所帮助

如果我只是循环我的
HashMap
并点击数据库500多次(使用4部分查询)。。。由于我没有利用SQL server,这似乎效率低下得令人痛苦。现在要花一分钟。我使用H2作为我的嵌入式数据库,但如果需要,我愿意使用Derby或Hyper

  • 通过
    HashMap
    循环并检索每个条目对应的、最佳匹配的经度/纬度(如果有)的最快方法是什么?请注意,我必须将准备好的语句中的
    与每个条目对应的地址和城市进行匹配。再一次,您可以查看我当前的方法

  • 我倾向于使用存储过程,但教程提到创建存储过程类的
    JAR
    文件,然后将其安装到Derby。如何部署一个独立的Java应用程序,该应用程序具有依赖于
    JAR
    存储过程的嵌入式DB


我愿意听取任何反馈,即使不是直接的回答。请帮忙!我愿意听取任何反馈,即使不是直接的回答。请帮忙!