gpt4 book ai didi

mysql - 为什么我的查询对于选择小于、大于与索引的组合很慢?

转载 作者:行者123 更新时间:2023-11-29 01:04:06 24 4
gpt4 key购买 nike

我有以下查询:

SELECT * FROM table_1 
WHERE longitude > 5.71873540775
AND longitude < 6.30763059225
AND latitude > 52.1688986788
AND latitude < 52.5286273212
LIMIT 0, 50

这个查询运行的很慢。我尝试了经度和纬度的组合索引和单独索引。该表包含许多行 (200.000) 和 10 列。上述查询的结果数为 20。

我怎样才能让这个特定的查询运行得更快?

更新 1

这是执行计划:

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1 SIMPLE table_1 range longitude,latitude longitude 6 NULL 1401 Using where

最佳答案

正如 ypercube 所说,2 个范围查询效果不佳。但也许您出于某种原因无法将引擎切换到 myISAM。我们可以通过将工作分割为两个分别进行范围查找的查询来实现这一点。

您应该需要单独的索引,一个在纬度字段上,一个在经度上。

SELECT * FROM

(
SELECT * FROM table_1
WHERE longitude > 5.71873540775
AND longitude < 6.30763059225
) a,
(
SELECT * FROM table_1
WHERE latitude > 52.1688986788
AND latitude < 52.5286273212
) b

WHERE a.id = b.id

仍然不会像使用空间索引那样快,但可能比您当前的方法快一点。

关于mysql - 为什么我的查询对于选择小于、大于与索引的组合很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com