0
votes

Tournez une sous-requête MySQL dans une jointure

Comment puis-je transformer cette sous-requête dans un code> rejoindre code>?

J'ai lu que les sous-requêtes sont plus lentes que joindre code> s. P>

SELECT 
    reklamation.id, 
    reklamation.titel,
    ( 
        SELECT reklamation_status.status 
        FROM reklamation_status 
        WHERE reklamation_status.id_reklamation = reklamation.id 
        ORDER BY reklamation_status.id DESC 
        LIMIT 1 
    ) as status
FROM reklamation 
WHERE reklamation.aktiv=1


0 commentaires

3 Réponses :


0
votes

Utilisation de Rejoindre La requête peut être réécrite à: XXX


0 commentaires

1
votes

Cela devrait le faire:

SELECT r.id, r.titel, MAX(s.id) as status
FROM reklamation r
LEFT JOIN reklamation_status s ON s.id_reklamation = r.id
WHERE r.aktiv = 1   
GROUP BY r.id, r.titel


0 commentaires

0
votes

Ce que vous lisez est incorrect. Les sous-requêtes peuvent être plus lentes, plus rapides ou identiques que des jointures. J'écrirais la requête comme suit: xxx

pour la performance, vous souhaitez un index sur reklamation_status (ID_Reklamation, ID, Status) .

Le chemin, c'est un cas où la sous-requête est probablement la méthode la plus rapide d'exprimer cette requête. Si vous essayez un rejoindre , vous avez besoin d'une sorte d'agrégation pour obtenir le statut le plus récent. Cela peut être coûteux.


0 commentaires