La réponse d'Aykut est la meilleure réponse dans la plupart des circonstances. C'est à noter que l'équivalent join
est plus compliqué que le in
. Il serait:
SELECT DISTINCT c.*
FROM caritbl c JOIN
dbo.fn_AtamaliCariListe(37) as acl(id)
ON c.cari_id = acl.id;
Notez le DISTINCT
. À moins que nous sachions que la fonction renvoie des valeurs uniques, nous en avons besoin.
Maintenant, il peut y avoir des cas où le JOIN
est réellement meilleur. Si la fonction est non déterministe, il est possible que SQL Server la réévalue à plusieurs reprises pour chaque ligne traitée par le IN
. Je ne sais pas si SQL Server ferait cela, mais c'est possible. Un JOIN
garantit que la fonction n'est évaluée qu'une seule fois.
Im désolé, je ne connais plus parler. J'ai révisé ma question, vous pouvez le voir maintenant. –