Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Re: SQL question ¿why using clause 'ALL'?
"Daniel Morgan" <damorgan_at_x.washington.edu> wrote in
news:1075764482.779925_at_yasure...
> schumacker wrote:
> > Look at this two SQL sentences:
> >
> > SQL> SELECT ename, job, sal
> > 2 FROM emp
> > 3 WHERE sal > ALL
> > 4 (SELECT sal
> > 5 FROM emp
> > 6 WHERE job = 'CLERK')
> > 7 ORDER BY sal DESC;
> >
> >
> > SQL> SELECT ename, job, sal
> > 2 FROM emp
> > 3 WHERE sal >
> > 4 (SELECT MAX(sal)
> > 5 FROM emp
> > 6 WHERE job = 'CLERK')
> > 7 ORDER BY sal DESC;
> ... but questions such as "Which is better" almost always lead to
> someone taking the answer as gospel and applying it to cases where it
> isn't applicable.
My post should not indicate that I do not agree with Daniel, but the autotrace results was suprising for me so I post them and maybe they get you started on your further invesigations:
The execution plan is different and this results in a different amount of consistent gets which gives you information about the logical I/O that was neccessary for your request. But as Daniel mentioned to generalize this finding is the hard part. Does it hold true for tables with many rows...
scott_at_DEV> set sutotrace traceonly
scott_at_DEV> SELECT ename, job, sal
2 FROM emp
3 WHERE sal > ALL
4 (SELECT sal
5 FROM emp
6 WHERE job = 'CLERK')
7 ORDER BY sal DESC;
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (ORDER BY)
2 1 FILTER 3 2 TABLE ACCESS (FULL) OF 'EMP' 4 2 TABLE ACCESS (FULL) OF 'EMP'
Statistics
0 recursive calls 0 db block gets 39 consistent gets 0 physical reads 0 redo size 548 bytes sent via SQL*Net to client 495 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 8 rows processed
scott_at_DEV> SELECT ename, job, sal
2 FROM emp
3 WHERE sal >
4 (SELECT MAX(sal)
5 FROM emp 6 WHERE job = 'CLERK')
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE 1 0 SORT (ORDER BY)
2 1 FILTER 3 2 TABLE ACCESS (FULL) OF 'EMP' 4 2 SORT (AGGREGATE) 5 4 TABLE ACCESS (FULL) OF 'EMP'
Statistics
0 recursive calls 0 db block gets 6 consistent gets 0 physical reads 0 redo size 548 bytes sent via SQL*Net to client 495 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 8 rows processed
-- Matthias Wirtz - Norfolk, USAReceived on Mon Feb 02 2004 - 21:13:29 CST