sql1:
SELECT LS.LINKSET_NAME,T_LS.UAV,T_LS.UAVT,L.LINK,T_L.SVCT
FROM TSPPI_TRFS_LINKSET_HWNGN T_LS,TSPPI_TRFS_LINK_HWNGN T_L,TSP_CI_LINK L,TSP_CI_LINKSET LS
WHERE T_LS.OFFICE_ID = LS.OFFICE_ID
AND LS.OFFICE_ID = L.OFFICE_ID
AND T_L.OFFICE_ID = L.OFFICE_ID
AND T_LS.LINKSET=LS.LINKSET
AND LS.LINKSET_ID = L.LINKSET_ID
AND T_L.LINK = L.LINK
sql2:
select * from
(
select a.office_id,a.uav,a.uavt,b.linkset_id from TSPPI_TRFS_LINKSET_HWNGN a ,TSP_CI_LINKSET b
where a.office_id=b.office_id and a.LINKSET=b.LINKSET
) t1,
(
select a.office_id, svct,b.linkset_id from TSPPI_TRFS_LINK_HWNGN a,TSP_CI_LINK b
where a.office_id=b.office_id and a.link=b.link
) t2
where t1.office_id=t2.office_id and t1.linkset_id=t2.linkset_id
sql1和slq2结果是否一样
SELECT LS.LINKSET_NAME,T_LS.UAV,T_LS.UAVT,L.LINK,T_L.SVCT
FROM TSPPI_TRFS_LINKSET_HWNGN T_LS,TSPPI_TRFS_LINK_HWNGN T_L,TSP_CI_LINK L,TSP_CI_LINKSET LS
WHERE T_LS.OFFICE_ID = LS.OFFICE_ID
AND LS.OFFICE_ID = L.OFFICE_ID
AND T_L.OFFICE_ID = L.OFFICE_ID
AND T_LS.LINKSET=LS.LINKSET
AND LS.LINKSET_ID = L.LINKSET_ID
AND T_L.LINK = L.LINK
sql2:
select * from
(
select a.office_id,a.uav,a.uavt,b.linkset_id from TSPPI_TRFS_LINKSET_HWNGN a ,TSP_CI_LINKSET b
where a.office_id=b.office_id and a.LINKSET=b.LINKSET
) t1,
(
select a.office_id, svct,b.linkset_id from TSPPI_TRFS_LINK_HWNGN a,TSP_CI_LINK b
where a.office_id=b.office_id and a.link=b.link
) t2
where t1.office_id=t2.office_id and t1.linkset_id=t2.linkset_id
sql1和slq2结果是否一样
解决方案 »
- The Repository Service起不来,那位大师帮忙看看啊
- 多个session能同时调用执行同一个存储过程
- oracle 调用 DLL里面的方法,不出错,但没效果
- 有关XML映射为JavaBean的问题
- Insert into message_m (site_cd,msg_seq_no,message,message_yobi,reg_day,trans_time,trans_kbn,trans_yobi1,trans_yobi2)
- 好象是游标的问题
- 如何给参数赋NULL 值?
- Red Hat Linux 9 下安装 Oracle 9i R2 出错
- 网上哪里有ORACLE系统知识的网页????谢谢大家了!!
- 高分求解! RedHat7.3上如何安装apache_1.3.27?
- 想学oracle
- 大容量数据问题~~请高手指点
因为第二句多做子查询,而且select 出来字段多
第二个显示7个字段
a.office_id,a.uav,a.uavt,b.linkset_id ,a.office_id, svct,b.linkset_id
第一句数据扫描时,直接连接查询,
第二句先完成子查询(扫描第一次),然后再进行where后面关联查询(扫描第二次)
之所以我觉得第一句效果会好一些
二来a.office_id, a.uav, a.uavt, b.linkset_id,svct和
LS.LINKSET_NAME, T_LS.UAV, T_LS.UAVT, L.LINK, T_L.SVCT内容也不一样啊。
sql1:
SELECT LS.LINKSET_NAME,T_LS.UAV,T_LS.UAVT,L.LINK,T_L.SVCT
FROM TSPPI_TRFS_LINKSET_HWNGN T_LS,TSPPI_TRFS_LINK_HWNGN T_L,TSP_CI_LINK L,TSP_CI_LINKSET LS
WHERE T_LS.OFFICE_ID = LS.OFFICE_ID
AND LS.OFFICE_ID = L.OFFICE_ID
AND T_L.OFFICE_ID = L.OFFICE_ID
AND T_LS.LINKSET=LS.LINKSET
AND LS.LINKSET_ID = L.LINKSET_ID
AND T_L.LINK = L.LINK
sql2:
select t1.linkset_name,t1.uav,t1.uavt,t2.link,t2.svct from
(
select a.office_id,a.uav,a.uavt,b.linkset_id,b.linksetname from TSPPI_TRFS_LINKSET_HWNGN a ,TSP_CI_LINKSET b
where a.office_id=b.office_id and a.LINKSET=b.LINKSET
) t1,
(
select a.office_id, svct,b.linkset_id,b.link from TSPPI_TRFS_LINK_HWNGN a,TSP_CI_LINK b
where a.office_id=b.office_id and a.link=b.link
) t2
where t1.office_id=t2.office_id and t1.linkset_id=t2.linkset_id
显示结果是否一样,那个效率更高
有道理!
因为Oracle如果是第一次执行sql语句,它需要编译;第二次和第二次以后执行直接从内存找出相同的sql语句,不需要花时间编译;所以第二次以后执行的时间会短一些;如果两句sql都是第一次执行,我认为第一句的效率会好一些
性能:sql1的新能比sql2的性能搞
原因:sql1是采用and做为条件查询语句,整个语句只有一条,因此从头到位只执行了一条,有与and连接作为条件,可能比sql2
在同一时间内要用更多cpu资源,就像异步执行
:sql2是先执行里面的子查询语句,然后返回结果给父查询语句,作为查询的条件,执行语句有先后,但由于子查询与父查询
语句很简单,因此在同意时间内要的cpu资源会少一些,但时间会长一些,就像是同步,先子查询,后父查询