J'ai une requête avec sous-requête mais la table de sous-requêtes a environ 500.000 enregistrements et l'exécution de cette requête prend trop de temps. Comment puis-je accélérer cette requête? Toutes les suggestions:Problème de performance de tri 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]);
Il y a 3 autres colonnes qui questionnent le dernier enregistrement de la table Emplacements:
COALESCE(
(SELECT EngineState FROM Locations
WHERE Locations.VehicleID = Clients.VehicleID ORDER BY ID DESC LIMIT 1),
0
) EngineState
Comme je vois trier les résultats dans le tableau des emplacements est le facteur de performance là-bas. Tableau des emplacements si rempli toutes les minutes par 1000 données de localisation des véhicules. x, y, vitesse ...
Puis-je indexer le champ varchar (64)? Parce que VehicleID est VarChar (64) ... –
@Hasan: pourquoi, vous pouvez. – Quassnoi
Le moteur de table Emplacements est également MyISAM ..? –