2017-06-05 1 views
0

Exemple simplifié 1:Où dans la sous-requête ou dans la requête principale, qu'est-ce qui est préférable?

SELECT * FROM (
    SELECT x, y, z FROM table1 
    WHERE x = 'test' 
    -- union, etc, etc, complicated stuff... 
) AS t 
-- union, etc, etc, complicated stuff... 

Exemple simplifié 2:

SELECT * FROM (
    SELECT x, y, z FROM table1 
    -- union, etc, etc, complicated stuff... 
) AS t 
-- union, etc, etc, complicated stuff... 
WHERE x = 'test' 

Lequel de ce qui précède est plus populaire? Est-ce plus performant? Est recommandé pour d'autres raisons? Est-ce que cela aide à filtrer les résultats "tôt", avant de faire des opérations d'union et similaires? Merci.

Répondre

1

En MySQL vous voulez absolument la condition de filtrage dans la sous-requête. MySQL matérialise les sous-requêtes. Plus la sous-requête est petite, plus la requête est rapide. En outre, MySQL peut utiliser un index pour la condition.