所有,
我正在查找一个邮政编码,然后在给定的半径内找到所有其他邮政编码。我正在尝试对数据库进行一次调用,因此应该使用哪种查询?我在考虑使用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列

10-06 08:05