子查询性能比较

1.单行子查询

只返回一行.使用单行比较操作符

SELECT last_name
FROM   employees
WHERE  salary >
               (SELECT salary
                FROM   employees
                WHERE  last_name = 'Abel');
Salary上增加索引会带来性能提升.

 

2.多行子查询

返回多于一行.使用多行比较操作符

SQL> ed
已写入 file afiedt.buf
  1  SELECT employee_id, last_name
  2  FROM   employees
  3  WHERE  salary in
  4                  (SELECT   MIN(salary)
  5                   FROM     employees
  6*                  GROUP BY department_id)
SQL> /

 

3.子查询与两表关联查询性能比较

子查询循环关联
去循环全表扫描父表A,然后在子表B上有个建了索引的字段COL,用A.COL=B.COL做关联
两表关联排序合并
A表全表扫描,排序COL,B表全表扫描,排序COL,然后做关联A.COL=B.COL

 

posted @ 2012-07-15 16:18  simplefrog  阅读(534)  评论(0编辑  收藏  举报