【问题标题】:combining query for query optimisation组合查询进行查询优化
【发布时间】:2015-10-25 17:08:21
【问题描述】:

我遇到了一些要求, 这是我的第一个查询 SELECT price FROM resdential WHERE (CITY LIKE '$Location') AND ( Bedrooms='$Bedrooms' AND Bathsroom='$Bathroom')

当城市是伦敦并且城市是任何其他城市时,我想搜索公寓(如果是多切斯特), (优先考虑伦敦) 现在每次我只从伦敦获得结果时,我需要合并结果,合并伦敦和多切斯特结果或任何其他城市结果,需要帮助 是的,你可以说使用 * 但是,首先我想搜索 London den 任何其他城市

【问题讨论】:

  • 您可以使用单个查询进行搜索,然后返回 * 或城市、价格,然后使用两个数组对伦敦结果进行优先排序。下面有 PHP 代码来展示我的回答方法。希望这是您正在寻找的。​​span>
  • 不转义,你的网站会被“SQL注入”。

标签: mysql database optimization


【解决方案1】:

你是这个意思吗?:

SELECT price FROM resdential WHERE (CITY IN ('$Location')) AND ( Bedrooms='$Bedrooms' AND Bathsroom='$Bathroom')

$Location 将是包含伦敦的城市列表。

【讨论】:

  • 如果答案解决了您的问题,请将其标记为正确答案。
  • 添加它以使其更快:INDEX(bedrooms, bathrooms, city)
【解决方案2】:

我会在您的脚本中(或从数据库中)列出伦敦附近的城市列表,搜索 city="london" 或 city="city2" 或 city="city3" 然后在您的脚本中处理伦敦的优先级逻辑。例如

$prioList=aray();
$nonPrioList=array();
$results=mysqli_query("SELECT City, Price FROM resdential WHERE CITY IN '$selectedCity' ")
while($row=mysqli_fetch_assoc($results)){
  if($row['City']=="London"){
    array_push($prioList,$row);
  }else{
    array_push($nonPrioList,$row);
  }

}

这应该给你两个数组,一个是你的伦敦结果,另一个是你的非伦敦结果。

【讨论】:

  • 我正在使用另一个解决方案,但现在我将尝试您的解决方案这是我的解决方案SELECT City, Price FROM resdential WHERE ( Bedrooms=2 AND bathrooms=2) ORDER BY (CITY= 'London') DESC , CITY
  • 自动先给出伦敦结果,这是个好主意吗?
  • 老实说,我不知道您可以通过这种方式使用订单。
【解决方案3】:

SELECT City, Price FROM resdential WHERE ( Bedrooms=2 AND bathrooms=2) ORDER BY (CITY= 'London') DESC , CITY 这真的对我有用, bdw 感谢您的所有帮助,我真的很感激,您也帮助我朝着正确的方向前进

【讨论】:

  • 添加它以使其更快:INDEX(bedrooms, bathrooms)
猜你喜欢
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
  • 2019-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多