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.z
You are selecting all columns from all tables (select *) so there is little point in the optimizer using an index when the query engine will then have to do a lookup from the index to the table on every single row.
(select *)