我在H2中有一张表格,其中包含邮政编码(〜130万)至各自的纬度/经度(为双精度)。
我正在尝试使用以下查询(动态生成)过滤数据。
SELECT * FROM postcodes WHERE latitude BETWEEN 51.50 AND 51.51 AND longitude BETWEEN -0.15 AND -0.13
但是,尽管已经为两个列都建立了索引,但是查询仍然比我预期的慢得多-平均大约需要200毫秒。要查找数百个,这是一个问题。我很欣赏200ms的速度,但是对于索引来说,它似乎很慢,而且比进行表扫描时要快得多。
我感到困惑的是,如果我选择ID列并进行类似的BETWEEN
查询,则会在20毫秒内得到一个结果。我确实感谢该ID具有UNIQUE
索引,而我的数据却没有。
我正在使用H2 v1.4.196,并使用PreparedStatements
通过JDBC访问我的数据库。