Ordre des tests dans un IF (SQL Server)

Ordre des tests dans un IF (SQL Server) - SQL/NoSQL - Programmation

Marsh Posté le 09-10-2017 à 15:11:16    


Bonjour,
 
 Dans une procédure TSQL, j'ai un IF avec plusieurs conditions. Du genre :
 
 IF (Condition_1 AND Condition_2 AND Condition_3)
    BEGIN
       ...
 END
 
Sur ces 3 conditions, une d'elle utilise une fonction qui est assez (voire très) lente.
Les 2 autres conditions sont assez rapides.
 
Ma question est la suivante :
 Comment SQL Server fait pour ce IF ?  Est-ce qu'il vérifie chaque condition, ou comme c'est un "AND", il teste la première condition, et si c'est TRUE, la seconde, et ainsi de suite ?
 
En d'autres termes, je souhaite éviter que SQL server vérifie la condition la plus lente si l'une des 2 autres conditions (les plus rapides) est à FALSE.
 
 Je sais que je pourrais faire qq chose comme ça :
 IF (Condition_1 AND Condition_2)   -- Les 2 conditions rapides
    BEGIN
       IF  Condition_3
           BEGIN
              ...
           END
 END
 
Mais ce n'est pas très joli.
Est-ce que l'ordre des Conditions dans un IF est important ? SQL Server suit-il l'ordre des Conditions, ou il fait ce qu'il a envie de faire ?
Est-ce qu'on peut forcer l'ordre des conditions ?
 
La question est aussi valable pour une condition OR :
 IF (Condition_rapide OR Condition_Lente)
    BEGIN
       ...
 END
 
Je veux éviter que SQL ne vérifie les 2 conditions. Si la condition rapide est TRUE, alors, pas besoin de tester la Condition_Lente.
 
Merci de vos conseils.


---------------
Les montres sans aiguilles Origami Watches sont disponibles : www.origami.watch.
Reply

Marsh Posté le 09-10-2017 à 15:11:16   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed