J'ai deux questions ici mais je leur demande à la fois car je pense qu'ils sont interdépendants.Optimisation d'une requête complexe dans mysql
Je travaille avec une requête complexe (jointures multiples + sous-requêtes) et la table est assez grande aussi (environ 2 000 000 enregistrements dans cette table).
Une partie de cette requête (une LEFT JOIN) est nécessaire pour trouver un enregistrement qui a une deuxième valeur la plus basse dans une colonne cetain parmi tous les enregistrements associés à la clé primaire de la première table. Pour l'instant j'ai isolé cette partie et la réflexion sur les lignes de -
SELECT id FROM tbl ORDER BY `myvalue` ASC LIMIT 1,1;
Mais il y a un cas où, s'il n'y a que 1 enregistrement de la table, il doit retourner cet enregistrement au lieu de NULL. Donc, ma première question est de savoir comment écrire une requête pour cela? Deuxièmement, compte tenu de la taille de la table et du temps qu'il faut déjà pour exécuter même après avoir créé des index, je comprends que l'ajout de plus de complexité pour atteindre la partie ci-dessus pourrait affecter considérablement le temps d'interrogation.
Je ne peux pas se décomposer rejoint parce que je dois obtenir quelques-unes des colonnes de la clause ORDER BY (l'application dispose d'une option pour trier le résultat par ces colonnes, la colonne ci-dessus « de myvalue » étant l'un d'entre eux)
Quel serait le (s) moyen (s) d'aborder ce problème?
Merci
qui a fonctionné. Merci beaucoup. J'ai également réussi à améliorer les performances de la requête dans une certaine mesure après avoir ajouté cela. Donc, tout est bon pour le moment. – naiquevin