explain
select
*
from
zipcode_distances z
inner join
venues v
on z.zipcode_to=v.zipcode
inner join
events e
on v.id=e.venue_id
where
z.zipcode_from='92108' and
z.distance <= 5
我試圖找到所有「在5英里的郵政編碼92108以內的場地的活動」,但是,我很難優化此查詢。如何避免在此mysql查詢上進行全表掃描?
這是什麼解釋的樣子:
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, SIMPLE, e, ALL, idx_venue_id, , , , 60024,
1, SIMPLE, v, eq_ref, PRIMARY,idx_zipcode, PRIMARY, 4, comedyworld.e.venue_id, 1,
1, SIMPLE, z, ref, idx_zip_from_distance,idx_zip_to_distance,idx_zip_from_to, idx_zip_from_to, 30, const,comedyworld.v.zipcode, 1, Using where; Using index
我得到的「E」表進行全表掃描,我想不出我需要創建得到它什麼指數要快。
任何意見,將不勝感激
謝謝
您是否需要結果集中所有表的所有列? –
我試圖避免使用「in」子查詢。 – john
我想要做的事情的俗語說明是找到郵政編碼駐留在郵政編碼中的場所,我發現郵政編碼靠近92108.因此,它加入場地,然後加入與該場地相關的活動。 – john