首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL :如何减少对同一表..Query优化的多次查询

SQL :如何减少对同一表..Query优化的多次查询
EN

Stack Overflow用户
提问于 2013-12-29 05:52:29
回答 1查看 823关注 0票数 0

我有一张表,上面有公司名单和位置(位置id作为外键)。

用户将在搜索框中搜索“位置”中的公司,我希望返回与该位置匹配的公司(位置id),如果该位置中没有公司存在,则我希望向其他位置显示可用的公司(靠近询问位置的位置-在基于GEO-空间坐标的不同表中以某种方式映射为接近位置)。

因此,我对此过程的SQL查询如下

  1. 获取位置ID

$loc_id=从location_name=$locationTerm所在的位置选择id

  1. 使用该位置ID获取“公司表”中的公司

$companies= SELECT *来自location_id= $loc_id的公司

  1. 然后,如果返回的查询小于行数(例如3),即$companies.count()<3,那么我们需要查找附近的区域来提高公司的结果。
  2. 从表NearByLcoations (多到多)获取附近的位置,由相邻位置对组成

$array_loc_ids=从NearbyLocations中选择loc_id= $loc_id;

  1. 然后再次查询companies表中的附近位置ids数组。

$companies=从in($array_loc_ids)的公司中选择*;

在这个过程中,我是多次击中表公司,定位表一次,在条件下失败击中附近的位置表。是否有任何SQL优化可以减少查询时间.这是为我工作,但我认为是非常糟糕的编码和方法,以实现的结果。对优化查询有什么好的建议吗??

EN

回答 1

Stack Overflow用户

发布于 2013-12-29 06:26:53

根据名称获取位置id,然后使用该位置id从公司表中获取公司的前两个查询可以组合如下:

代码语言:javascript
复制
SELECT * FROM company join location on location.id = company.locationid 
where location.name = 'locationname';

我建议为整个过程创建一个mysql存储过程。它必将提高整个过程的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20822572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档