我有一个数据库调用,我不知道如果我这样做是最有效的方式。基本上,这个调用查询一个带有邮政编码的事件表,然后加入一个邮政编码数据库,该邮政编码数据库给出该事件的历史记录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