我有一张表,上面有公司名单和位置(位置id作为外键)。
用户将在搜索框中搜索“位置”中的公司,我希望返回与该位置匹配的公司(位置id),如果该位置中没有公司存在,则我希望向其他位置显示可用的公司(靠近询问位置的位置-在基于GEO-空间坐标的不同表中以某种方式映射为接近位置)。
因此,我对此过程的SQL查询如下
$loc_id=从location_name=$locationTerm所在的位置选择id
$companies= SELECT *来自location_id= $loc_id的公司
$array_loc_ids=从NearbyLocations中选择loc_id= $loc_id;
$companies=从in($array_loc_ids)的公司中选择*;
在这个过程中,我是多次击中表公司,定位表一次,在条件下失败击中附近的位置表。是否有任何SQL优化可以减少查询时间.这是为我工作,但我认为是非常糟糕的编码和方法,以实现的结果。对优化查询有什么好的建议吗??
发布于 2013-12-29 06:26:53
根据名称获取位置id,然后使用该位置id从公司表中获取公司的前两个查询可以组合如下:
SELECT * FROM company join location on location.id = company.locationid
where location.name = 'locationname';我建议为整个过程创建一个mysql存储过程。它必将提高整个过程的性能。
https://stackoverflow.com/questions/20822572
复制相似问题