Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按纬度和经度划分的休眠条件_Java_Mysql_Hibernate_Latitude Longitude - Fatal编程技术网

Java 按纬度和经度划分的休眠条件

Java 按纬度和经度划分的休眠条件,java,mysql,hibernate,latitude-longitude,Java,Mysql,Hibernate,Latitude Longitude,有了一个超过2000万行的MySQL表,Hibernate可以通过某种方式构建一个标准,以便在给定纬度和经度的情况下获得最近的行吗 使用标准将非常好,因为我需要使用更多的过滤器(价格、类别等) 最后,可以按距离排序行吗?还是行太多?计划A有大量行, 索引(lat)是一种非启动型、性能型、, 即使限制为条纹: 和lat介于65和69之间。 索引(lat,lng)并不好,因为优化器会 不要同时使用两个列,即使和lng介于… 计划B您的下一个选择将涉及lat和lng,以及一个子查询。 而5.6版将是有

有了一个超过2000万行的MySQL表,Hibernate可以通过某种方式构建一个标准,以便在给定纬度和经度的情况下获得最近的行吗

使用
标准将非常好,因为我需要使用更多的过滤器(价格、类别等)


最后,可以按距离排序行吗?还是行太多?

计划A有大量行,
索引(lat)
是一种非启动型、性能型、, 即使限制为条纹:
和lat介于65和69之间
索引(lat,lng)
并不好,因为优化器会 不要同时使用两个列,即使
和lng介于…

计划B您的下一个选择将涉及lat和lng,以及一个子查询。 而5.6版将是有益的。有点像 这(包括
索引(lat、lng、id)后)

由于种种原因,B计划只比A计划略好

计划C有数百万行,您需要 . 这涉及到一个重复探测的存储过程 检查表,查找足够的行。 它还涉及分区以获得粗略的2D索引。 该链接有参考代码,其中包括对类别等内容的过滤

方案A和方案B为O(sqrt(N));方案C为O(1)。 也就是说,对于方案A和B,如果将行数增加四倍, 你花了双倍的时间。C计划不可能成功 随着N的增加,速度变慢

SELECT ... FROM (
    SELECT id FROM tbl
        WHERE lat BETWEEN... 
          AND lng BETWEEN... ) x
    JOIN tbl USING (id)
    WHERE ...;