前几天我问similar question,但后来发现我已经超越了自己。我正在寻找有关处理以下方案的正确方法的建议。我正在尝试SELECT
以最快的方式为给定的地址和城市提供正确的经度和纬度。
我的COORDINATES
表有25,000行,如下所示:
我有一个Java HashMap<Integer, List<String>>
,其中包含Integer
作为密钥,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 ?)
请注意LIKE
和=
的使用。另请注意我正在使用聚合所有结果的UNION ALL
,而我实际上只对单个最佳匹配结果感兴趣,以避免继续查询是否找到匹配项。也许LIMIT
可能会有所帮助。
如果我只是遍历我的HashMap
并且数据库达到500次以上(使用4部分查询)......由于我没有利用SQL服务器,这看起来很痛苦。现在花了一分多钟。我正在使用H2作为我的嵌入式数据库,但如果需要,我愿意使用Derby或Hyper。