我有一個先進的MySQL搜索,基於緯度和經度進行半徑搜索。 上次我建立這樣的系統時,查詢的速度有很多問題。 我一直在閱讀,我注意到有些人會選擇它。Mysql在select或where子句中搜索/過濾語句會更快嗎?
SELECT *, (6271 * acos(cos(radians('".$lat."')) * cos(radians(lat)) * cos(radians(long) - radians('".$lng."')) + sin(radians('".$lat."')) * sin(radians(lat)))) AS distance FROM carpark HAVING distance < 15 ORDER BY distance LIMIT 0 , 10";
,或者也可以在where子句中運行它。
Where (6371 * ACOS(COS(RADIANS(".$lat.")) * COS(RADIANS(grt32sg32u_PostCodeData.lat)) * COS(RADIANS(PostCodeData.lon) - RADIANS(".$lon.")) + SIN(RADIANS(".$lat.")) * SIN(RADIANS(PostCodeData.lat)))) <= 15";
那麼,哪一個是更快?他們都是相同的速度還是有差異? 有沒有其他方法可以優化此查詢?
也許把它放在SELECT和WHERE子句中的人需要顯示距離,而只將它放在WHERE子句中的人不需要顯示它。 –