使用预准备语句在循环中高效查询嵌入式数据库
前几天我问了一个类似的问题 ,但后来我意识到自己已经超前了。 我正在寻找有关处理以下方案的正确方法的建议。 我正试图以最快的方式为给定的地址和城市SELECT
正确的经度和纬度。
我的COORDINATES
表有25,000行,看起来像这样:
我有一个Java HashMap<Integer, List>
,它包含一个Integer
作为键,以及一个包含2个条目,一个地址和一个城市的ArrayList
。 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 ?)
注意使用LIKE
和=
。 另请注意我正在使用UNION ALL
聚合所有结果,而我实际上只对单个最佳匹配结果感兴趣,以避免继续查询是否找到匹配项。 也许LIMIT
可能会有所帮助。
如果我只是遍历我的HashMap
并且在数据库中打了500多次(用4部分查询)……由于我没有利用SQL服务器,这看起来很痛苦。 现在花了一分多钟。 我使用H2作为我的嵌入式数据库,但如果需要,我愿意使用Derby或Hyper。
-
循环浏览
HashMap
并为每个条目检索相应的,最佳匹配的经度/纬度(如果有)的最快方法是什么? 请注意我必须匹配?
在准备好的报表中,每个条目都有相应的地址和城市。 再次,您可以在此处查看我当前的方法。 -
我倾向于存储过程,但像这样的教程提到创建存储过程的类的
JAR
文件,然后将其安装到Derby。 如何部署具有依赖于JAR
存储过程的嵌入式数据库的独立Java应用程序?
- 哪里可以在j2me中看到derby数据库中存储的数据
- 在插入derbyDB varchar字段之前,搜索“特殊”字符的java字符串
- 使用derby在netbeans中查询嵌入式数据库
- 尝试将JPA与Derby一起使用时ClassNotFoundException:org.apache.derby.jdbc.EmbeddedDriver
- 未找到Derby嵌入式数据库’APPDATA’文件夹,尝试创建OS X应用程序.app
- 以编程方式启动Derby
- 结果集未打开。 validation自动提交是否关闭。 Apache Debry
- 在jar文件中打包嵌入式数据库
- 如何以小写名称创建表 – JavaDB / Derby?