Avatar billede p_r Nybegynder
20. april 2004 - 10:59 Der er 8 kommentarer og
1 løsning

Ligheder og forskelle mellem IN og EXISTS operationen i SQL

Hej!

Er der nogen der kan fortælle mig ligheder og forskelle mellem IN og EXISTS?
Avatar billede arne_v Ekspert
20. april 2004 - 11:21 #1
IN bruges til at teste om værdier er i resultatet af en subquery

EXISTS bruges til at teste om en subquery returnerer noget

En IN må altid kunne omskrives til en EXISTS - men ikke omvendt.

Normalt vil man forvente at en IN er hurtigere end en EXISTS.
Avatar billede arne_v Ekspert
20. april 2004 - 11:22 #2
To eksempler (ens):

SELECT * FROM T1 WHERE ID IN (SELECT ID FROM T2);
SELECT * FROM T1 WHERE EXISTS (SELECT * FROM T2 WHERE T2.ID=T1.ID);
Avatar billede trer Nybegynder
20. april 2004 - 11:28 #3
arne_v> Oracle siger at deres IN er hurtigere end en EXISTS, men i SQL Server er det lige omvendt.

I en IN skal der ske en implicit sortering og søgning efter et match - hvorimod en EXISTS kun checker om der er et resultat eller ej. Af denne grund returnerer man aldrig en kolonne i en EXISTS, men altid en konstant.

ex

select * from t1 where exists(select 1 from t2 where something=other)
select * from t1 where something in (select other from t2)

I SQL Server 2000 omskriver "Query Rewriteren" en IN til en EXIST i de fleste tilfælde uden man ser det, men det er ikke tilfældet i SQL Server 7.

En IN har dog en yderligere funktion - den kan erstatte et OR :

ex

select * from t1 where a=1 or a=2 or a=8
<=>
select * from t1 where a in (1,2,8)
Avatar billede p_r Nybegynder
20. april 2004 - 12:13 #4
tak for det:)
Avatar billede arne_v Ekspert
29. maj 2004 - 00:18 #5
Tid at få lukket spørgsmålet ?
Avatar billede p_r Nybegynder
30. maj 2004 - 12:15 #6
ja -bare skriv et "svar"
Avatar billede arne_v Ekspert
30. maj 2004 - 12:17 #7
svar
Avatar billede arne_v Ekspert
25. juli 2004 - 23:01 #8
??
Avatar billede p_r Nybegynder
26. juli 2004 - 11:28 #9
undskyld..havde glemt det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester