我正在研究PHP & MySql應用程序。這裏是我有和正在嘗試做的:基於距離的搜索和排序
我有一個機構配置文件,其中包含機構名稱,郵政編碼,region_id,類別和其他詳細信息表。用戶可以根據region_id和類別搜索一個機構。我可以SELECT * FROM TABLE WHERE category = 1 and region_id = 1
。然後,我需要根據距郵政編碼升序的用戶距離對結果集進行排序。我有一個算法,將用戶postal_code轉換爲latlong,並找到每個機構的距離(對於表中的每個機構,我都有很長的距離)。
問題是我的桌子很大。當我在上面的場景中搜索時,結果集包含大約1000行。然後,我必須從用戶postal_code中找到每行的距離,然後對其進行排序。現在,它在我的本地速度很快,但我確信當它開始運行時,搜索,計算和排序需要很長時間。然後,我想通過一次顯示10個結果來解決問題,但是很明顯,這並不能解決問題,因爲我仍然必須計算距離並進行排序,然後才能顯示結果。
您認爲最好的解決方法是什麼?我正在考慮按照lat的升序進行搜索,但由於lat的長度不是線性的,所以這沒有意義。郵政編碼是加拿大的。我不知道我能否以某種方式利用它。
讓我知道你們的想法。謝謝。
這取決於你計算距離的方式。如果您可以在不對每次比較運行額外查詢的情況下執行此操作(在這種情況下您應該可以執行此操作),那麼對服務器排序1000行對於您而言無關緊要,您無需擔心。 – Vatev