У меня есть таблица в H2, содержащая почтовые индексы (~ 1,3 миллиона) для их соответствующих широт / долгот (как двойные).
Я пытаюсь отфильтровать данные, используя следующий запрос (сгенерированный динамически).
SELECT * FROM postcodes WHERE latitude BETWEEN 51.50 AND 51.51 AND longitude BETWEEN -0.15 AND -0.13
Однако, несмотря на индексирование обоих столбцов, запрос все еще намного медленнее, чем я ожидал - в среднем он занимает около 200 мс.С сотнями, чтобы посмотреть, это проблема.Я понимаю, что 200 мс - это быстро, но кажется, что для индекса он медленный и намного быстрее, чем если бы он выполнял сканирование таблицы.
Что меня смущает, так это то, что если я выбираю столбец идентификатора и аналогичныеBETWEEN
запрос, я получаю результат в ~ 20 мс.Я действительно ценю, что у идентификатора есть индекс UNIQUE
, в то время как у моих данных нет.
Я использую H2 v1.4.196 и получаю доступ к своей базе данных через JDBC, используя PreparedStatements
.