我正在尝试将两个查询合二为一,希望您能帮助我。
该查询为我获取一定距离内的条目(邮政编码)列表。这工作得很好。($lat、$lng、$zip 和 $size 现在是硬编码的)。
现在我需要将它与从另一个表中搜索与这些邮政编码匹配的条目结合起来。
这是我的查询:
SELECT
source.zc_zip,
source.zc_location_name,
ACOS(
SIN(RADIANS(zc_lat)) * SIN(RADIANS($lat))
+ COS(RADIANS(zc_lat)) * COS(RADIANS($lat)) * COS(RADIANS(zc_lon)
- RADIANS($lng))
) * 6371 AS distance
FROM zip_coordinates AS source
WHERE zc_id <> $zip
GROUP BY source.zc_zip
HAVING distance < $size
ORDER BY distance LIMIT 10;
我已经将其修改为如下所示,因为当 source.zc_zip 与 info.meta_value 相同时我们匹配:
SELECT
source.zc_zip,
source.zc_location_name,
info.*,
ACOS(
SIN(RADIANS(zc_lat)) * SIN(RADIANS($lat))
+ COS(RADIANS(zc_lat)) * COS(RADIANS($lat)) * COS(RADIANS(zc_lon)
- RADIANS($lng))
) * 6371 AS distance
FROM zip_coordinates AS source, wp_postmeta AS info
WHERE zc_id <> $zip AND info.meta_value = source.zc_zip
GROUP BY source.zc_zip
HAVING distance < $size
ORDER BY distance LIMIT 10;
不用说,这个查询真的很慢(> 1 秒)。
任何人都可以帮忙吗?谢谢!:-)
– 多米尼克