Non, SQL Server est intelligent et sait qu'il est utilisé pour un EXISTS et ne renvoie AUCUNE DONNEE au système.
Quoth Microsoft :http://technet.microsoft.com/en-us/library/ms189259.aspx?ppud=4
La liste de sélection d'une sous-requête introduite par EXISTS se compose presque toujours d'un astérisque (*). Il n'y a aucune raison de répertorier les noms de colonne car vous testez simplement si les lignes qui remplissent les conditions spécifiées dans la sous-requête existent.
Pour vérifier vous-même, essayez d'exécuter ce qui suit :
SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable
WHERE a_valid_clause )
S'il faisait réellement quelque chose avec la liste SELECT, il lancerait une erreur div par zéro. Ce n'est pas le cas.
EDIT :Notez que la norme SQL en parle réellement.
Norme ANSI SQL 1992, page 191 http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt
3) Cas :
a) Si le<select list>
"*" est simplement contenu dans un<subquery>
qui est immédiatement contenu dans un<exists predicate>
, puis le<select list>
est équivalent à un<value expression>
c'est un<literal>
arbitraire .