Поиск медленного местоположения

У меня проблема с функцией поиска, она работает правильно, но загрузка занимает 14-18 секунд, и это причиняет мне большую боль.

Это функция поиска, которую я использую:

$sql="select *, 
( 3959 * acos( cos( radians( $lat ) ) * cos( radians( `lat` ) ) * cos( radians( `lng` ) - radians( $lng ) ) + sin( radians( $lat ) ) * sin( radians( `lat` ) ) ) )  AS distance 
  FROM postcodes,
       details 
 WHERE `postcode`=postcodes.outcode 
 HAVING " . implode(" AND ", $searches)." 
    AND isactive='y' 
 ORDER BY `distance`";

Если у кого-то есть какие-либо предложения, они все будут приветствоваться


Я потратил больше времени, работая над этим, и точно понимаю, что делает запрос, прежде чем добавить дополнительную информацию.

Теперь это мой обновленный запрос, я попытался использовать левое соединение, но я не смог соединить таблицу почтовых индексов с таблицей cardetails, и когда я перевернул ее, столбцы cardetails, где все отображаются нулевыми.

SELECT "column names",  
( 3959 * acos( cos( radians( $lat ) ) * cos( radians( `lat` ) ) * cos( radians(
`lng`   ) - radians( $lng ) ) + sin( radians( $lat ) ) * sin( radians( `lat` ) ) )) 
AS       distance
FROM details
inner JOIN car_postcodes ON details.postcode =  postcodes.outcode AND
distance  < 100 AND payment='y' AND expired='n' ORDER BY     
details.price

Это резко сократило время, затрачиваемое на выполнение запроса (примерно до 6 секунд), поэтому мне все еще нужно его улучшить.

Проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не могу использовать псевдоним столбца "расстояние" для измерения расстояния между пользователем и полем в таблице. Как я не могу использовать псевдоним столбца в пределах, где предложение.

Ответ, который я, кажется, читал на многих других постах, - это дополнительный выбор,

1 ответ

Я не уверен, что вы делаете, но следующая строка подозрительна

FROM postcodes,details

Если я не ошибаюсь, это crossjoin (если ваши таблицы большие, это просто умножит размеры и в итоге..., я просто не уверен, что вы пытаетесь сделать здесь)

Другие вопросы по тегам