我有一個數據庫調用,我不知道如果我這樣做是最有效的方式。基本上,這個調用查詢一個帶有郵政編碼的事件表,然後加入一個郵政編碼數據庫,該郵政編碼數據庫給出該事件的歷史記錄zip。然後它將登錄用戶加入到查詢中,並且該用戶在登錄時具有緯度/經度。因此整個查詢從用戶經緯度的許多英里內拉動事件。存儲過程mysql
我的問題,有沒有更好的方式來做到這一點,然後每次頁面加載時調用此查詢?存儲過程會更快嗎?我沒有任何與他們的經驗。我正在使用MySQL。
$this->db->select('*');
$this->db->from('events');
$this->db->join('zipcodes', 'zipcodes.zipcode = courses.courseZip');
$this->db->join('eventTypes', 'eventTypes.eventTypeID = events.eventType');
$this->db->where('eventApproved', 1);
$this->db->select('(DEGREES(ACOS(SIN(RADIANS('.$this->user['userLat'].'))
* SIN(RADIANS(latitude))
+ COS(RADIANS('.$this->user['userLat'].'))
* COS(RADIANS(latitude))
* COS(RADIANS('.$this->user['userLon'].' - longitude))))) * 69.09 AS distance');
$this->db->having('distance <', 100);
從數據庫中選擇'lat' /'long'並開發一個php函數可以做到這一點。 – RobertPitt 2010-09-15 14:15:39
你是什麼意思? lat/lon確實來自事件的數據庫,其中加入了與zipcode表匹配的事件,將事件的郵政編碼匹配到郵政編碼表中的郵政編碼。用戶對象提供自己的經緯度。 – Kyle 2010-09-15 14:17:47