Ho provato siapostgreSQL - in contro qualsiasi
1) smthng = qualsiasi (selezionare id da exmplTable)
2) smthng a (selezionare id da exmplTable)
e sto ottenendo gli stessi risultati per i miei dati.
C'è qualche differenza per le due espressioni ?
Ho provato siapostgreSQL - in contro qualsiasi
1) smthng = qualsiasi (selezionare id da exmplTable)
2) smthng a (selezionare id da exmplTable)
e sto ottenendo gli stessi risultati per i miei dati.
C'è qualche differenza per le due espressioni ?
No, nelle varianti sono gli stessi:
si possono vedere - i piani di esecuzione sono gli stessi troppo:
postgres=# explain select * from foo1 where id in (select id from foo2); ┌──────────────────────────────────────────────────────────────────┐ │ QUERY PLAN │ ╞══════════════════════════════════════════════════════════════════╡ │ Hash Semi Join (cost=3.25..21.99 rows=100 width=4) │ │ Hash Cond: (foo1.id = foo2.id) │ │ -> Seq Scan on foo1 (cost=0.00..15.00 rows=1000 width=4) │ │ -> Hash (cost=2.00..2.00 rows=100 width=4) │ │ -> Seq Scan on foo2 (cost=0.00..2.00 rows=100 width=4) │ └──────────────────────────────────────────────────────────────────┘ (5 rows) postgres=# explain select * from foo1 where id = any (select id from foo2); ┌──────────────────────────────────────────────────────────────────┐ │ QUERY PLAN │ ╞══════════════════════════════════════════════════════════════════╡ │ Hash Semi Join (cost=3.25..21.99 rows=100 width=4) │ │ Hash Cond: (foo1.id = foo2.id) │ │ -> Seq Scan on foo1 (cost=0.00..15.00 rows=1000 width=4) │ │ -> Hash (cost=2.00..2.00 rows=100 width=4) │ │ -> Seq Scan on foo2 (cost=0.00..2.00 rows=100 width=4) │ └──────────────────────────────────────────────────────────────────┘ (5 rows)
Nota che mentre questo è vero per la forma prende un * set *, c'è una seconda forma per ogni 'IN()' e '= ANY()' e quelli non sono completamente equivalenti. Considerare: http://stackoverflow.com/a/34627688/939860 e http://dba.stackexchange.com/q/125413/3684 –
@ErwinBrandstetter: = ANY (ARRAY) è una diversa creatura .. sebbene la sintassi sia la stessa –
Dalle [doc] (http://www.postgresql.org/docs /current/static/functions-subquery.html): * 'SOME' è un sinonimo di' ANY'. 'IN' è equivalente a' = ANY'. * – pozs
Dai uno sguardo, è spiegato qui: http://www.postgresql.org/docs/current/static/functions-comparisons.html – Roger