Сделать два заявления MySQL и цикл быстрее


Бы соединение будет быстрее здесь? Я проверял соединения, а это почти то же время! В основном его механизм отслеживания луча, который находит все свойства в квадрате на gmaps, и тогда есть функция JavaScript, которая находит точки в многоугольник. Так что в любой момент извлечена записей может быть в десятки тысяч.

Первое утверждение находит все почтовые индексы в latLongs, второй, соответственно, имеет все свойства в этом районе.

Имейте в виду, я просто вырубил это очень быстро, так как raycasting на JavaScript занимает большую часть моего времени

    $latlongs = explode("), ", $_GET['bounds']);


$first = ($latlongs[0]);
$first = substr($first, 2);


$second = $latlongs[1];
$second = substr(substr($second, 1),0, -2);

$first = explode(", ", $first);
$second = explode(", ", $second);
//$result = mysql_query("SELECT * FROM `postcodeGoogle` WHERE lat");
$lat1 = $first[0];
$lat2 = $second[0];

$long1 = $first[1];
$long2 = $second[1];
$resultE = "";
$result = mysql_query("SELECT * FROM `postcode`.`postcodeGoogle` WHERE (`lat` BETWEEN '$lat1' AND '$lat2') AND (`long` BETWEEN '$long1' AND '$long2')")or die(mysql_error());

while($row = mysql_fetch_assoc($result)){


        $prop = mysql_query("SELECT * FROM `digital_hub`.`address_list` WHERE `postcode`='".$row['postcode']."'")or die(mysql_error());
        echo $row['postcode'];
        echo mysql_num_rows($prop);
        while($propRow=mysql_fetch_assoc($prop)){
            $resultE = $resultE."(".$row['lat'].", ".$row['long'].") || ";
        }
}
$resultE = substr($resultE, 0, -4);
echo $resultE;


258
0
задан 17 августа 2011 в 03:08 Источник Поделиться
Комментарии
2 ответа

Лично я бы присоединиться, даже если они в настоящее время с той же скоростью.

Таким образом, ваш код автоматически обновляется, когда БД обновляется (т. е. когда добавляется индекс в БД или они решили разделов БД по широте/долготе). В этой ситуации, если вы используете соединение код будет автоматически извлечь выгоду из какого-либо улучшения.

1
ответ дан 17 августа 2011 в 06:08 Источник Поделиться

<?php 

include("db.php");
mysql_select_db("digital_hub");
$latlongs = explode("), ", $_GET['bounds']);

$first = ($latlongs[0]);
$first = substr($first, 2);

$second = $latlongs[1];
$second = substr(substr($second, 1),0, -2);

$first = explode(", ", $first);
$second = explode(", ", $second);
//$result = mysql_query("SELECT * FROM `postcodeGoogle` WHERE lat");
$lat1 = $first[0];
$lat2 = $second[0];

$long1 = $first[1];
$long2 = $second[1];
$resultE = "";
$result = mysql_query("SELECT * FROM `digital_hub`.`address_list` INNER JOIN `postcode`.`postcodeGoogle` ON `digital_hub`.`address_list`.`postcode` = `postcode`.`postcodeGoogle`.`postcode` WHERE `postcode`.`postcodeGoogle`.`lat` >= '$lat1' AND `postcode`.`postcodeGoogle`.`lat` <= '$lat2' AND `postcode`.`postcodeGoogle`.`long` >= '$long1' AND `postcode`.`postcodeGoogle`.`long` <= '$long2'")or die(mysql_error());

while($row = mysql_fetch_assoc($result)){

$resultE = $resultE."(".$row['lat'].", ".$row['long'].") || ";

}
$resultE = substr($resultE, 0, -4);
echo $resultE;
?>

Затем я проиндексировали все столбцы, которые используются в этом запросе, и увеличил лимит памяти на 512 МБ. Работает удовольствие.

0
ответ дан 18 августа 2011 в 02:08 Источник Поделиться