所有,
我正在查找一个邮政编码,然后在给定的半径内找到所有其他邮政编码。我正在尝试对数据库进行一次调用,因此应该使用哪种查询?我在考虑使用OR子句,但想知道是否有人对此有更好的查询优化想法?我考虑过做这样的事情,但是任何建议都将不胜感激。谢谢
$zipArray = $zipLoc->inradius($_SESSION['pav_event_zip_code'],50);
$total_zips = count($zipArray);
$sql = "Select * from vendor where vendor_zip='$zipArray[0]'";
for($i=1;$i<$total_zips;$i++){
$sql. = "OR vendor_zip='$zipArray[$i]'";
}
最佳答案
您可以使用IN语句,尽管它不会更快,但绝对很容易阅读:
$zipArray = $zipLoc->inradius($_SESSION['pav_event_zip_code'],50);
$zipArray[] = -1; // make sure the IN Statement does not fail
$sql = 'SELECT * FROM vendor WHERE vendor_zip IN ('.implode(',',$zipArray).')';
确保您已索引vendor_zip列