--1.
select * from A,B where A.AID=B.BID and A.AID=1
--2.
select * from (select AID  from A where AID=1) as A1,B where A1.AID=B.BID1.在任何情况下,上面两条T-SQL语句的执行结果是否相同?
2.详解上面两条T-SQL语句在什么情况下,执行效率问题?

解决方案 »

  1.   

    select d.* from emp e,dept d where e.deptno=d.deptno and e.deptno=10;
    执行计划如下:
    执行计划
    ----------------------------------------------------------
    Plan hash value: 568005898----------------------------------------------------------------------------------------
    | Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |         |     5 |   110 |     4   (0)| 00:00:01 |
    |   1 |  NESTED LOOPS                |         |     5 |   110 |     4   (0)| 00:00:01 |
    |   2 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |
    |*  3 |    INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
    |*  4 |   TABLE ACCESS FULL          | EMP     |     5 |    10 |     3   (0)| 00:00:01 |
    ----------------------------------------------------------------------------------------select d.* from (select a.deptno from emp a where a.deptno=10) e,dept d where e.deptno=d.deptno;
    执行计划如下:
    执行计划
    ----------------------------------------------------------
    Plan hash value: 568005898----------------------------------------------------------------------------------------
    | Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |
    ----------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |         |     5 |   110 |     4   (0)| 00:00:01 |
    |   1 |  NESTED LOOPS                |         |     5 |   110 |     4   (0)| 00:00:01 |
    |   2 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    20 |     1   (0)| 00:00:01 |
    |*  3 |    INDEX UNIQUE SCAN         | PK_DEPT |     1 |       |     0   (0)| 00:00:01 |
    |*  4 |   TABLE ACCESS FULL          | EMP     |     5 |    10 |     3   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------------- 两者执行计划相同,返回结果相同
      

  2.   

    首先谢谢你的回答。
    顺便请问你,如何通过执行计划比较T-SQL语句的性能?比较那几个?