SQL1:
SELECT NAME,
       (SELECT SEXNAME FROM TBL_SEX B WHERE A.SEXNO = B.SEXNO) AS SEXNAME
  FROM TBL_PERSON A
 WHERE CERTNO = '3404031';SQL2:
SELECT NAME, A.SEXNAME
  FROM TBL_PERSON A
  LEFT JOIN TBL_SEX B ON A.SEXNO = B.SEXNO
 WHERE CERTNO = '3404031';这两种写法执行效率,哪一个方式更为高,为什么?

解决方案 »

  1.   

    SQL2:有个错误,以下进行修正
    SELECT NAME, B.SEXNAME
      FROM TBL_PERSON A
      LEFT JOIN TBL_SEX B ON A.SEXNO = B.SEXNO
     WHERE CERTNO = '3404031';
      

  2.   

    第一种,标量子查询,执行计划中的连接方式,肯定是 NL 。 第二种,左连接,执行计划中的连接方式,可能是 MJ 或  HJ 。楼主先研究一下,这三种联接方式的特性,就会有结论。
      

  3.   

    在SQL1 中首要 要确保b.SEXNO中只有一条记录,不是要报错;
    个人经验如果B.SEXNO有索引,SQL1(子查询)会快点,
    没有索引的话,两者差不多