如果有一个包含超过2000万行的MySQL表格,是否有使用Hibernate构建条件来获取最接近给定纬度和经度的行的方法?
使用Criteria
会很好,因为我需要使用更多的过滤器(价格、类别等)。
最后,是否可以按距离排序获取这些行?或者行数太多了?
如果有一个包含超过2000万行的MySQL表格,是否有使用Hibernate构建条件来获取最接近给定纬度和经度的行的方法?
使用Criteria
会很好,因为我需要使用更多的过滤器(价格、类别等)。
最后,是否可以按距离排序获取这些行?或者行数太多了?
INDEX(lat)
在性能方面是不可行的,即使限制到一个条带:AND lat BETWEEN 65 AND 69
。 INDEX(lat, lng)
也不好,因为优化器不会使用两个列,即使使用了AND lng BETWEEN...
计划B:您的下一个选择将涉及lat和lng以及一个子查询。版本5.6会很有用。它类似于这样(在包括INDEX(lat, lng, id)
后):SELECT ... FROM (
SELECT id FROM tbl
WHERE lat BETWEEN...
AND lng BETWEEN... ) x
JOIN tbl USING (id)
WHERE ...;