日期:2014-05-17  浏览次数:20675 次

sql性能求指教!!!!
如下2个sql:
sql1:
     select * from table1 t1
    inner join table2 on t1.id = t2.oid
    where t2.name like '%XXX%'
sql2:
    select * from table1 t1 
    inner join table2 on t1.id = t2.oid and t2.name like '%XXX%'
以上2个sql哪个性能有差别吗?

------解决方案--------------------
根据你的写法、做个简单测试:t1 10W行数据 、、t2 100W行数据

create table t1(id number);
create table t2(oid number,name varchar2(10));
insert into t1 select rownum from dual connect by level<=100000;
insert into t2 select rownum,rownum
------解决方案--------------------
'a' from dual connect by level<=1000000;
commit;

sys@ORCL> set autot trace exp
sys@ORCL> ed
Wrote file afiedt.buf

  1  select * from t1
  2      inner join t2 on t1.id = t2.oid
  3*     where t2.name like '%XXX%'

sys@ORCL> /

Execution Plan
----------------------
Plan hash value: 2959412835

---------------------------------------

------解决方案--------------------
 Id  
------解决方案--------------------
 Operation          
------解决方案--------------------
 Name 
------解决方案--------------------
 Rows  
------解决方案--------------------
 Bytes 
------解决方案--------------------
 Cost (%CPU)
------解决方案--------------------
 Time     
------解决方案--------------------

---------------------------------------

------解决方案--------------------
   0 
------解决方案--------------------
 SELECT STATEMENT   
------解决方案--------------------
      
------解决方案--------------------
    64 
------解决方案--------------------