Je veux optimiser cette requête (puisque les sous-requêtes ne sont pas rapides en général), mais je suis perdu car je ne peux pas réécrire cela en utilisant des jointures qui seront meilleures pour la performance.MySQL optimiser les sous-requêtes
SELECT id, company, street, number, number_addition, postalcode, telephone
FROM clients
WHERE (postalcode BETWEEN '1000' AND '9000') AND street = (
SELECT DISTINCT street FROM clients WHERE (postalcode BETWEEN '1000' AND '9000') AND postalcode <= (
SELECT MIN(postalcode) FROM clients WHERE street = 'Main Street' AND (postalcode BETWEEN '1000' AND '9000'))
ORDER BY postalcode DESC LIMIT 1, 1)
ORDER BY postalcode DESC, street DESC, number DESC, number_addition DESC, telephone DESC
LIMIT 1
Merci pour votre temps les gars.
Cette requête est-elle vraiment lente? Ne pas optimiser au hasard. Activez * slow_query_log * dans votre serveur MySQL. Cela enregistre les requêtes qui prennent plus de * long_query_time * dans votre fichier * slow_query_log_file *. –