有两个表district和street字段分别是:
district:
D_ID,D_NAME   数据为:
1,区1;
2,区2;
3,区3
street:
S_ID,S_NAME,S_DID     数据为:
1,街道1,1;
2,街道2,1;
3,街道3,2;
4,街道4,3;提供了S_ID查询S_NAME和D_NAME
有两个SQL语句,我想知道这两个语句的优缺点:
1、select s.s_name,(select d.d_name from district d where d.d_id = s.s_did) d_name from street s where s.s_id = 2
2、select s.s_name,d.d_name from street s left join district d on d.d_id = s.s_did where s.s_id = 2

解决方案 »

  1.   

    自己去看看SQL执行计划,一看便知。
      

  2.   

    一个是子查询,一个是外连接。和查询结果集及表中数据有关,
    如果district较大,查询结果集较小,第一种性能较好,这种子查询时最好能够加速rownum=1,对提高性能有一定作用。
    如果district较小,查询结果集较大,第二种性能较好。
      

  3.   

    为何不看一下执行计划呢?
    上面的内容是最真实的反应
    set autot traceonly;