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
------解决方案--------------------
2112
[解决办法]
1647 (3)
[解决办法]
00:00:20
[解决办法]
[解决办法]
* 1
[解决办法]
HASH JOIN
[解决办法]
[解决办法]
64
[解决办法]
2112
[解决办法]
1647 (3)
[解决办法]
00:00:20
[解决办法]
[解决办法]
* 2
[解决办法]
TABLE ACCESS FULL
[解决办法]
T2
[解决办法]
64
[解决办法]
1280
[解决办法]
1600 (2)
[解决办法]
00:00:20
[解决办法]
[解决办法]
3
[解决办法]
TABLE ACCESS FULL
[解决办法]
T1
[解决办法]
103K
[解决办法]
1314K
[解决办法]
45 (5)
[解决办法]
00:00:01
[解决办法]
---------------------------------------
sys@ORCL> ed
Wrote file afiedt.buf
1 select * from t1
2* inner join t2 on t1.id = t2.oid and t2.name like '%XXX%'
sys@ORCL> /
Execution Plan
----------------------
Plan hash value: 2959412835
---------------------------------------
[解决办法]
Id
[解决办法]
Operation
[解决办法]
Name
[解决办法]
Rows
[解决办法]
Bytes
[解决办法]
Cost (%CPU)
[解决办法]
Time
[解决办法]
---------------------------------------
[解决办法]
0
[解决办法]
SELECT STATEMENT
[解决办法]
[解决办法]
64
[解决办法]
2112
[解决办法]
1647 (3)
[解决办法]
00:00:20
[解决办法]
[解决办法]
* 1
[解决办法]
HASH JOIN
[解决办法]
[解决办法]
64
[解决办法]
2112
[解决办法]
1647 (3)
[解决办法]
00:00:20
[解决办法]
[解决办法]
* 2
[解决办法]
TABLE ACCESS FULL
[解决办法]
T2
[解决办法]
64
[解决办法]
1280
------解决方案--------------------
1600 (2)
[解决办法]
00:00:20
[解决办法]
[解决办法]
3
[解决办法]
TABLE ACCESS FULL
[解决办法]
T1
[解决办法]
103K
[解决办法]
1314K
[解决办法]
45 (5)
[解决办法]
00:00:01
[解决办法]
---------------------------------------
可以看到、你的两个sql的执行计划完全一致、本质上讲这是两个完全相同的sql