zip数组的mySQL查询优化

时间:2011-12-14 16:13:18

标签: mysql arrays select for-loop

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

1 个答案:

答案 0 :(得分:1)

你可以使用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).')';

确保您已将列供应商zip索引