gpt4 book ai didi

PHP/MySQL调试+优化

转载 作者:行者123 更新时间:2023-11-29 03:42:52 25 4
gpt4 key购买 nike

我的数据库中存储了大约 100,000 个商家,该表包含他们的姓名、纬度、经度

现在,我的搜索功能采用纬度/经度输入并查找 10 英里半径内的商店。然而,这 100,000 个商家中有很多是特许经营商(即关联商店组)。对于特许经营权,我只想显示最近的商店,隐藏同一特许经营权的其余商店(如果 10 英里半径内有多个地点)。

我试过:

SELECT SQL_CALC_FOUND_ROWS *, xxxxx as Distance
FROM table
WHERE isActive = 1
GROUP BY Name
HAVING Distance < 10
ORDER BY Distance ASC

xxxxx 是根据输入的纬度/经度计算距离的函数:

((ACOS(SIN('$lat'*PI()/180)*SIN(`Latitude`*PI()/180) + COS('$lat'*PI()/180)*COS(`Latitude`*PI()/180)*COS(('$long'-`Longitude`)*PI()/180))*180/PI())*60*1.1515)

但是它没有返回正确的结果。与没有“GROUP BY”子句的相同查询相比,无论是特许经营店还是非特许经营店,我得到的结果都少得多。请问有什么问题吗?

另外,速度真的很慢。我已将 Name 列编入索引。但我认为“GROUP BY NAME”是瓶颈,因为 MySQL 必须进行大量的字符串比较?假设可以修复 GROUP BY 错误,我想知道我有什么选择可以使它更快。是否值得设置一个“Business_Group”列并对商店进行预处理,以便为特许经营商店分配一个 Business_Group ID,这样 GROUP BY 会更快,因为它比较的是 int?

最佳答案

使用 views 创建一个虚拟表计算列 xxxxx

并使用表和 view 的连接.

那会更快并且优化。

关于PHP/MySQL调试+优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228445/

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