我的问题是使用Left Join进行优化 我有4个表:
1.Main
2.City
3.Country
4.Area
表格结构:
主要
城市
国家/地区
区域
必须将主表与三个表进行比较才能获得值。
当主表的 Origin_city 和 Dest_city 与City表的 Origin_city 和 Dest_City 完全匹配时,然后考虑来自City表的 Value_City 。
如果主表的 Orig_city 和 Dest_city 与City表不匹配( Value_City 不可用时)。然后将Main表的 Origin_Country 和 Dest_Country 与Country表进行比较,如果匹配,则考虑 Value_Country 。
如果 Origin_Country 且 Dest_Country 与Country表不匹配。然后将Main表的 Origin_Area 和 Dest_Area 与Area表进行比较,如果匹配则考虑 Value_Area 。
我根据要求编写了一个MySQL查询。问题是City表有近100万行,运行需要很长时间。 我的代码在
之下SELECT main.Origin_City, main.Dest_City,
main.Origin_Country, main.Dest_Country,
main.Origin_Area, main.Dest_Area,
IFNULL(Value_City,IFNULL(Value_Country,Value_Area))
FROM main
LEFT JOIN City
on (main.Origin_City = City.Origin_City)
and (main.Dest_City = City.Dest_City)
LEFT JOIN Country
ON (main.Origin_Country = Country.Origin_Country)
and (main.Dest_Country = Country.Dest_Country)
LEFT JOIN Area
ON (main.Origin_Area = Area.Origin_Area) and (main.Dest_Area = Area.Dest_Area)
MIN
值。 如何优化查询以获得结果。我最近开始查询MySQL。我在MS Access中做了同样的事情。它完美无缺。