2010-07-15 2 views
4

Est-ce que quelqu'un peut me dire lequel des requêtes suivantes aura de meilleures performances?Performances de la clause ON par rapport à la clause WHERE

SELECT 
     * 
FROM 
     [TABLE1] T1 
     INNER JOIN [TABLE2] T2 
     ON T2.[FK_ID] = T1.[PK_ID] 
WHERE 
     T2.[ACTIVE] = 1; 

SELECT 
     * 
FROM 
     [TABLE1] T1 
     INNER JOIN [TABLE2] T2 
     ON T2.[FK_ID] = T1.[PK_ID] AND 
     T2.[ACTIVE] = 1; 
+0

Selon moi 2e La requête devrait être plus efficace. – Salil

+0

à vérifier avec sql profiler –

+7

Testez les performances de chacun et vous saurez. Puis revenez en arrière et acceptez les réponses à certaines de vos questions passées. –

Répondre

3

Ils sont identiques: l'optimiseur est assez intelligent pour travailler cela. De plus, SQL est déclaratif, donc vous demandez à l'optimiseur quelque chose sans lui dire comment le faire. Cependant, le premier est "correct" en ce que vous séparez JOIN et WHERE.

+0

+1 pour la différence entre déclaratif versus ... euh apparemment impératif selon Wikipédia. –