【发布时间】:2011-11-13 01:58:35
【问题描述】:
我在场地表中有一个场地列表,在位置表中有一个城市/州的列表。场地与我的组织唯一的区号相关联,称为 SOYID。 SOYID 由一个地理区域组成 - Locations 表中的每一行都有一个城市、州和相应的 SOYID。 有些场地行有 SOYID,有些则没有;对于那些没有的,我需要找到列出的城市和州的 SOYID。 我只想选择特定 SOYID 中的那些场地。
此查询有效,但是加载需要几秒钟;我认为我没有正确编写查询。目前 Venues 大约有 140 行,Locations 有 40,000 个。
$sql = "SELECT DISTINCT a.VenueID, a.Name, a.PhotoID, a.City, a.StateAbbr
FROM Venues AS a LEFT JOIN Locations AS c ON a.City = c.city
WHERE a.SOYID = '" . mysql_real_escape_string($SOYID) . "'
OR ((c.city = a.City) AND (c.state = a.StateAbbr) AND (c.SOYID = '" . mysql_real_escape_string($SOYID) . "'))
ORDER BY a.Name ASC";
【问题讨论】:
标签: php mysql join query-optimization