Som svar på skriblerier forfattet af Tomas Christiansen
> Peter Lykkegaard skrev:
>>> Hvis tabellen b indeholder 1.000.000 poster, skal udtrykket i
> EXISTS
>>> udføres 1.000.000 gange - og det tager tid!!!
>>
>> Er det ikke et _meget_ tænkt eksempel
>
> Ikke mere tænkt end at der i noget af Oracles dokumentation advares om
> konsekvenserne af brugen af EXISTS - netop fordi udtrykket bliver
> udført for _hver_ funden post. Jeg har selv lidt dårlige erfaringer
> med udtryk, hvor jeg har haft brug for adskillige EXISTS i samme
> sætning - det performer ikke godt!
>
Hmm på MSSQL er det lige omvendt her returnere EXISTS hurtigere end IN ved
sammenlignelige queries netop fordi den returnere True if _any_ records
opfylder et kriterie
Så vidt jeg kan forstå på dokumentationen til MSSQL så afbryder den hvis den
finder een record der opfylder det valgte kriterie
SELECT foo.a
FROM foo
WHERE EXISTS
(SELECT *
FROM bar
WHERE foo.y = bar.y
AND foo.z = bar.z)
Giver 49.63% af en samlet batch
SELECT foo.a
FROM foo
WHERE foo.b IN
(SELECT bar.b
FROM bar
WHERE foo.y = bar.y
AND foo.z = bar.z)
Giver 50.37% af en samlet batch
Der muligvis andre eksempler der giver andre resultater
mvh/Peter Lykkegaard