首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

SQL语句优化一例

2014-01-28 
------解决方法--------------------------------------------------------?第一步: 根据输入取ID; 第二步

------解决方法--------------------------------------------------------?
第一步: 根据输入取ID;
第二步:根据ID 取内容;

我写了2条SQL语句,他们执行速度相差10多倍,不知道什么原因,请教大家下:

大致过程如下
tableID: 根据输入条件,得到ID,我把它作为一张临时表;
tableContex:根据输入条件,得到Context,这儿我也把它最为一 张临时表;

根据tableID.id=tableContex.id 获取最终的结果;


方法一:

select cont(*) from
( select id from table0 ) as tableID;
( select * from tableContex ) as tableContex
where tableID.id=tableContex.id

方法二:

select count(*) from
( select id from table1
union select id from table2
union select id from table3
) as tableID;
( select tableContex.* from tableContex ) as tableContex

where tableID.id=tableContex.id

两种方法差别主要在第一步:
第一种方法是直接根据输入条件一步找出ID;
第二种方法是根据输入条件 先找出子对象,在根据子对象找出ID,最后再把结果合并。

为什么这两种方法差别这么大?

谁能解释下,SQL语句很长,我这儿把它简化,不知道大家能否明白我说的意思

 

------SQL语句优化 解决方法--------------------------------------------------------
select id from table1
union select id from table2
union select id from table3
这里已经把三个表遍历了几次,union把重复的删除了,然后再( select tableContex.* from tableContex ) 连接。肯定会慢。