我有一个带有子查询的查询,但子查询表有大约500.000条记录,并且运行此查询需要很长时间。我怎样才能加快这个查询?任何建议:MySQL排序性能问题
SELECT ID, VehicleID, Plate, VehicleType,
COALESCE(
(SELECT EngineState
FROM Locations
WHERE Locations.VehicleID = Clients.VehicleID ORDER BY ID DESC LIMIT 1),
0
) EngineState
FROM Clients
WHERE ID IN (SELECT ClientID FROM UserClients WHERE [email protected]);
还有3列,其查询最后一个记录从位置表:
COALESCE(
(SELECT EngineState FROM Locations
WHERE Locations.VehicleID = Clients.VehicleID ORDER BY ID DESC LIMIT 1),
0
) EngineState
当我看到在地址表中排序的结果是性能的因素存在。地点表如果每分钟填充1000辆车的位置数据。 X,Y,速度...
我可以索引varchar(64)字段吗?因为VehicleID是VarChar(64)... – 2010-03-04 12:17:16
@Hasan:为什么,你可以。 – Quassnoi 2010-03-04 12:24:22
也位置表引擎是MyISAM ..? – 2010-03-04 12:28:41