这样一条sql要怎么优化呢?

李秀才 2017-04-14 03:54:43
这样一个sql要怎么优化呢?
select t.loginName,t.distanceStr,t.sex from (select (st_distance(point(r.lon,r.lat), point(108.979118,34.166634)) * 111195 )
as distanceStr ,r.loginName,
r.sex from ycd_sys_user r where r.id != '55ef37a3dcd3423ab7f1cb8e5de3de1f' )
t where t.distanceStr <=50000
order by t.distanceStr asc limit 20
...全文
271 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel6709 2017-04-18
  • 打赏
  • 举报
回复
引用 5 楼 tianfang 的回复:
不要查你周围的圆形,就查你为中心的长方形,一下就简单了。 一般来说,你的显示的位置是长方形区域,即便是显示圆形区域,客户端再处理一下就是了
对的 dim D=1.414*distance; where (center.x-p.x<=D and p.x-center.x<=D and center.y-p.y<=D and p.y-center.y<=D)
angel6709 2017-04-18
  • 打赏
  • 举报
回复
数据量多少?
tianfang 2017-04-18
  • 打赏
  • 举报
回复
不要查你周围的圆形,就查你为中心的长方形,一下就简单了。 一般来说,你的显示的位置是长方形区域,即便是显示圆形区域,客户端再处理一下就是了
gggggame 2017-04-17
  • 打赏
  • 举报
回复
where t.distanceSrtr<=5000 去掉等于,并放里面不知道能不能快些 SELECT t.loginName, t.distanceStr, t.sex FROM ( SELECT ( st_distance ( point (r.lon, r.lat), point (108.979118, 34.166634) ) * 111195 ) AS distanceStr, r.loginName, r.sex FROM ycd_sys_user r WHERE distanceStr < 50000 and r.id != '55ef37a3dcd3423ab7f1cb8e5de3de1f' ) t WHERE 1=1 ORDER BY t.distanceStr ASC LIMIT 20
李秀才 2017-04-14
  • 打赏
  • 举报
回复
引用 楼主 qq_33556185 的回复:
这样一个sql要怎么优化呢? select t.loginName,t.distanceStr,t.sex from (select (st_distance(point(r.lon,r.lat), point(108.979118,34.166634)) * 111195 ) as distanceStr ,r.loginName, r.sex from ycd_sys_user r where r.id != '55ef37a3dcd3423ab7f1cb8e5de3de1f' ) t where t.distanceStr <=50000 order by t.distanceStr asc limit 20
mysql,要查询离我5km的人
李秀才 2017-04-14
  • 打赏
  • 举报
回复
mysql,要查询离我5km的人
墨笙弘一 2017-04-14
  • 打赏
  • 举报
回复
表结构设计的不合理 太多嵌套 oracle 还是mysql?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧